داده استرینگ در پایتون شامل کاراکترهایی برای نمایش انواع متن و رشته میشود. در پایتون از یک کاراکتر مجزا تا طولانیترین متنها همه از نوع داده استرینگ هستند. این نوع یکی از مهمترین، مفیدترین و پرکاربردترین نوعهای داده در همه زبانهای برنامه نویسی بخصوص زبانهای سطح بالا است. پایتون زبان برنامه نویسی سطح بالا و مفسری است که در اواخر دهه ۱۹۸۰ میلادی توسعه داده شده و در سالیان اخیر رشد بسیار عظیمی را تجربه کرده است. با وجود همهکاره و قدرتمند بودن زبان برنامه نویسی پایتون توانایی آن در حل مسائل مربوط به علم داده و هوش تجاری باعث افزایش بیشتر محبوبیت آن در بین برنامه نویسان شد. از استرینگ تقریبا در همه حوزههای فعالیت پایتون استفاده میشود.
در این مطلب از مجله فرادرس، درباره یکی از بنیادیترین نوع دادهها در پایتون به نام استرینگ بحث کردهایم. در ابتدا نوع String را تعریف کرده و بعد از آن انواع روشها کار با آن و عملیات قابل پیادهسازی بر روی آن را معرفی کردهایم.
استرینگ در پایتون چیست؟
استرینگ پایتون، نوع دادهای است که برای نمایش توالی از کاراکترها بهکار برده میشود. این کاراکترها شامل مواردی مانند فهرست زیر هستند.
- حروف الفبا
- اعداد
- نمادها
- کاراکتر فضای خالی یا «Whitespace»
استرینگهای پایتون غیرقابل تغییر هستند. به این معنا که وقتی استرینگی ساخته میشود، محتوی آن را نمیتوان تغییر داد. این ویژگی غیر قابل تغییر بودن به ثبات استرینگها کمک کرده و امنیت دادههای استرینگی در طول زمان اجرای برنامه را حفظ میکند.
نوع استرینگ در پایتون را به صورت کپسوله شده در علامتهای زیر مشخص میکنند.
- «کوتیشن یگانه» (Single Quotes) با نماد ”
- «کوتیشن دوگانه» (Double Quotes) با نماد “”
- «کوتیشن سهگانه» (Triple Quotes) با نماد ”’ ”’ یا “”” “””
هر کدام از این علامتها را میتوان به دلخواه استفاده کرد. این مسئله بخاطر انعطافپذیری زیاد پایتون در روش تعریف استرینگ است. به خصوص وقتی که رشتهای خودش حاوی علامت کوتیشن باشد، این تنوع نمادها کمک زیادی میکنند. در مثال زیر، نمونههایی از تعریف رشته را نمایش دادهایم.
1# Single quotes
2single_quote_string = 'Hello, World!'
3
4# Double quotes
5double_quote_string = "Hello, World!"
6
7# Triple quotes for multi-line strings or strings containing both single and double quotes
8triple_quote_string = '''Hello,
9World!'''
آموزش پایتون با کمک فیلم های فرادرس
پایتون، زبانی است همه فن حریف و قدرتمند. به همین دلیل، در بین زبانهای برنامهنویسی، به یکی از بهترین گزینهها برای توسعه نرمافزارهای پیچیده تبدیل شده است. تلاش برای گسترش مهارتهای برنامهنویسی پایتون یکی از انتخابهای خوب برای اشخاصی است که آینده شغلی خود را در این مسیر میجویند. علاوه بر این، یادگیری زبانهای برنامهنویسی به مرور با افزایش مهارت، جذابتر و کاربردیتر نیز میشود. برای یادگیری بهتر، روشهای گوناگونی وجود دارند. در این میان، یکی از بهترین روشها استفاده از فیلمهای آموزشی است.
وبسایت آموزشی فرادرس فیلمهای بسیار خوب و با کیفیتی را در همه زمینهها تولید میکند. در صورت علاقه به آموختن زبان پایتون در حد افراد مبتدی میتوانید فیلم آموزش رایگان پایتون، برنامه نویسی سریع و آسان در ۱۴۰ دقیقه از فرادرس را مشاهده کنید اما اگر آموزشهای اولیه پایتون را پشت سر گذاردهاید، فیلمهای زیر، موارد خوبی برای ادامه مسیر هستند. برای دیدن مجموعه فیلمهای آموزشی فرادرس در حوزه پایتون با کلیک بر روی تصویر بالا میتوانید به صفحه اصلی این مجموعه آموزشی هدایت شده و تمام گزینههای موجود را بررسی کنید.
چگونه در پایتون استرینگ ایجاد کنیم؟
ساخت استرینگ در پایتون بسیار ساده و سر راست است. این زبان برنامهنویسی، بسته به کاربردهای متنوع، روشهای مختلفی را برای تعریف رشته ارائه میدهد. اینکه رشتهها را در یک خط، چند خط یا حتی حاوی کوتیشن تعریف کنیم، هر کدام روش مخصوص به خود را دارند. در مثالهای زیر نمایش کاملی از روشهای مختلف تعریف استرینگ را همراه با مثالهای کدنویسی شده برای هر کدام ارائه دادهایم.
روش پایه تعریف استرینگ
برای تعریف استرینگ، پایهایترین روشی که در پایتون تعریف شده، استفاده از علامت کوتیشن است. انواع کوتیشنهای قابل استفاده برای اینکار را در بالاتر معرفی کردهایم. در این بخش مثالی را برای هر کدام نمایش میدهیم.
کوتیشن های یگانه
کوتیشنهای یگانه ” یکی از سادهترین انواع کوتیشن هستند. به همین ترتیب، تعریف استرینگ در پایتون هم با کمک این کوتیشنها به سادگی انجام میشود. این نوع از کوتیشنها برای تعریف استرینگ در یک خط بهکار برده میشوند.
1single_quote_string = 'Hello, World!'
کوتیشن های دو گانه
کوتیشنهای دوگانه هم مانند کوتیشنهای یگانهاند. این کوتیشنهای بسیار ساده را میتوان بهجای کوتیشن یگانه هم بهکار برد.
1double_quote_string = "Hello, World!"
هر دو مورد کوتیشنهای یگانه و دوگانه با روش یکسانی در پایتون استفاده میشوند و به همین ترتیب عملکرد یکسانی هم دارند. در نتیجه میتوان از این نمادها بهجای یکدیگر استفاده کرد. انتخاب بین آنها اغلب وابسته به حضور کاراکتر کوتیشن در درون استرینگ است. یعنی کوتیشنهایی که جزوی از استرینگ هستند. برای مثال به عبارت “It’s my book.” توجه کنید. برای استرینگ کردن نوع این عبارت نمیتوان از کوتیشن یگانه استفاده کرد.
کوتیشن های سه گانه
کوتیشنهای سهگانه با نماد ”’ ”’ یا “”” “”” برای ایجاد استرینگهای چند خطی یا استرینگهایی بهکار برده میشود که چند خط را پوشش میدهند.
1# Using triple single quotes
2triple_single_quote_string = '''This is a multi-line
3string that spans
4several lines.'''
5
6# Using triple double quotes
7triple_double_quote_string = """This is another way
8to create a multi-line string."""
کوتیشنهای سهگانه به طور خاص برای مستندسازی رشتهها یا «Docstrings» بهکار برده میشوند. قطعه رشتههای Docstring را اغلب به عنوان نوع خاصی از کامنت در پایتون بهکار میبرند. همچنین در زمانهایی که خود استرینگ شامل هر دو نوع کوتیشنهای یگانه و دوگانه باشد هم از این نوع کوتیشن استفاده میشود.
ایجاد رشته با کمک کوتیشن های نهفته
وقتی که رشتهای خودش شامل نمادهای کوتیشن باشد، استفاده از انواع متفاوت کوتیشن روش بسیار خوبی برای تعریف استرینگ است. با این روش، کوتیشنهای درون استرینگ را بدون نیاز به استفاده از «کاراکترهای فرار» (Escape Characters) محافظت میکنیم.
1# String with double quotes inside
2string_with_double_quotes = 'She said, "Hello!"'
3
4# String with single quotes inside
5string_with_single_quotes = "It's a beautiful day!"
6#If you need to include both single and double quotes inside a string, you can use escape characters () or triple quotes:
7# Using escape characters
8escaped_string = 'She said, "It's a beautiful day!"'
9
10# Using triple quotes
11triple_quote_string = """She said, "It's a beautiful day!" """
استفاده از کاراکترهای فرار
«کاراکترهای فرار» (Escape Characters) به برنامهنویسان کمک میکنند که از کاراکترهای خاص در استرینگ خود استفاده کنند. به عنوان مثال میتوان از کاراکتر خط جدید استفاده کرد. در کد زیر، مثال بیان شده را مشاهده میکنید.
1#(n), tab (t), backslash (\), and quotes (' or "):
2# Newline and tab
3special_char_string = "Hello,ntWorld!"
4
5# Backslash and quotes
6escaped_quotes_string = "She said, "It's a beautiful day!""
استرینگ های Raw
استرینگهای Raw با بک اسلش «» مانند کاراکتر الفبای معمولی رفتار میکنند. این نوع از استرینگها با کمک پیشوند r یا R ایجاد میشوند. برنامه نویسان از استرینگهای Raw به طور خاص برای نمایش عبارتهای با قاعده یا مسیرهای مربوط به فایلها در سیستم عامل استفاده میکنند.
1# Regular string with escape sequences
2regular_string = "C:\Users\Name"
3
4# Raw string
5raw_string = r"C:UsersName"
الحاق رشته ها
تکنیک مربوط به «الحاق رشتهها» (String Concatenation) برای چسباندن تعداد دو با بیشتری رشته و تشکیل یک رشته واحد استفاده میشود. کاربران زبان پایتون، با سادگی و با استفاده از عملگر + میتوانند رشتهها را به یکدیگر بچسبانند.
1str1 = "Hello"
2str2 = "World"
3concatenated = str1 + ", " + str2 + "!" # 'Hello, World!'
4#Alternatively, you can use the join method for concatenation, especially when dealing with lists of strings:
5words = ["Hello", "World"]
6joined_string = " ".join(words) # 'Hello World'
رشته های چند خطی
علاوه بر استفاده از کوتیشنهای سهگانه برای نوشتن استرینگهای چند خطی، میتوانیم از بکاسلش «» هم استفاده کنیم. با کمک بک اسلش، میتوانیم ادامه استرینگ را در خط بعد بنویسیم، بدون اینکه کاراکتر خط جدید به استرینگ اصلی اضافه شود.
1multi_line_string = "This is a long string that is "
2 "split across multiple lines "
3 "for better readability."
ایجاد ساختار پویا برای استرینگ در پایتون
پایتون برای ساخت استرینگهایی با ساختار پویا چندین روش مختلف را ارائه کرده است. این روشها شامل استفاده از متغیرها و عبارتها خاص میشوند.
قالب بندی با استفاده از علامت درصد
این یکی از روشهای قدیمی برای قالببندی رشتهها در پایتون است. نمونه قالببندی با این روش را در کد زیر میتوان مشاهده کرد.
1name = "Alice"
2age = 30
3formatted_string = "Name: %s, Age: %d" % (name, age) # 'Name: Alice, Age: 30'
روش str.format
البته استفاده از روش زیر، کنترل و خوانایی بیشتری را برای کدها فراهم میکند.
1name = "Alice"
2age = 30
3formatted_string = "Name: {}, Age: {}".format(name, age) # 'Name: Alice, Age: 30'
روش F-String
این روش از «حروف رشتهای قالببندی شده» (Formatted String Literals) استفاده میکند. روش F-Strings از پایتون ۳٫۶ به بعد معرفی شد. این روش یکی از روشهای بسیار قابل اعتماد و خوانا برای قالبدهی به رشتهها است.
1name = "Alice"
2age = 30
3formatted_string = f"Name: {name}, Age: {age}" # 'Name: Alice, Age: 30'
در بخشهای بعدی مطلب دوباره و با بیان جزئیات بیشتری به بررسی این تکنیکها در پایتون پرداختهایم.
دسترسی به کاراکترهای درون رشته
دسترسی به کاراکترها به صورت مجزا از درون استرینگ، بسیار ساده و سر راست است. این مسئله بخاطر پشتیبانی پایتون از ایندکسگذاری و تکنیک «تکهتکه کردن» (Slicing) است. از آنجا که استرینگها از توالی کاراکترها ساخته میشوند، هر کاراکتر موجود در استرینگ دارای موقعیت قرارگیری مشخصی است. این موقعیتها به ترتیب از اول استرینگ با شماره ۰ شماره گذاری شده و تا به انتهای استرینگ به شکل یک واحد، یک واحد، افزایش پیدا میکنند.
ایندکس گذاری
با کمک ایندکسگذاری میتوانیم به تمام کاراکترها در رشته به صورت مجزا دسترسی داشته باشیم. برای اینکار فقط باید شماره ایندکس کاراکتر مورد نظر را بدانیم. زبان برنامهنویسی پایتون از تکنیک ایندکسگذاری بر مبنای صفر استفاده میکند. یعنی اینکه اولین کاراکتر رشته در ایندکس شماره ۰، دومین کاراکتر در ایندکس شماره ۱، سومین کاراکتر در ایندکس شماره ۲ و همینطور تا به آخر قرار میگیرند. در ضمن، پایتون از ایندکسهای منفی هم پشتیبانی میکند. یعنی اینکه ایندکس «۱-» به آخرین کاراکتر، ایندکس «۲-» به یکی مانده به آخرین کاراکتر و همینطور تا به اول رشته ایندکسهای منفی موقعیت هر کاراکتر را نشان میدهند.
در کادر زیر، کدهای مثالی را پیادهسازی کردهایم که از ایندکسگذاری برای دسترسی به کاراکترهای استرینگ استفاده کرده است.
1string = "Hello, World!"
2
3# Accessing characters with positive indices
4first_character = string[0] # 'H'
5second_character = string[1] # 'e'
6
7# Accessing characters with negative indices
8last_character = string[-1] # '!'
9second_last_character = string[-2] # 'd'
ایندکس های خارج از محدوده
تلاش برای دسترسی به کارکتر از طریق ایندکسی که خارج از محدوده رشته است، باعث برخواستن خطای استثنای IndexError میشود. به این معنا که فرض کنیم عبارت «Hello » را در اختیار داریم. محدوده ایندکسهای این عبارت از ۴ مثبت تا ۵- است. هر عدد صحیحی خارج از این محدوده منجر به برخواستن خطای IndexError خواهد شد.
توجه: بسیار مهم است که در برنامهها از درون محدوده بودن ایندکسهایی مطمئن شویم که قصد دسترسی به آنها را در استرینگ داده شده داریم.
1string = "Hello"
2# Accessing out-of-range index
3try:
4 invalid_character = string[10] # IndexError
5except IndexError:
6 print("Index out of range")
تکنیک Slicing
تکنیک Slicing به برنامهنویسان کمک میکند که به زیر رشته خاصی دسترسی پیدا کنند. برای رسیدن به این هدف، برنامهنویس باید محدودهای از ایندکسها را مشخص کند. سینتکس خام تکنیک تکهتکه کردن رشتهها به صورت زیر است.
عبارات استفاده شده در این سینتکس را در فهرست زیر توضیح دادهایم.
- string: نام خود رشتهای که از درون آن باید زیر رشته مورد نظر انتخاب شود.
- start: این پارامتر، ایندکس شروع زیر رشته مورد نظر در رشته اصلی است. مقدار درون این ایندکس در زیر رشته مورد نظر وجود دارد.
- stop: این پارامتر، ایندکس انتهایی زیر رشته مورد نظر در رشته اصلی است. زیر رشته مورد نظر، شامل مقدار درون این ایندکس نمیشود.
در کادر زیر کدهای مربوط به مثالی درباره روش کار تکنیک Slicing را نمایش دادهایم.
1"Hello, World!"
2
3# Slicing with start and stop indices
4substring = string[0:5] # 'Hello'
5
6# Omitting start index (defaults to 0)
7substring_from_start = string[:5] # 'Hello'
8
9# Omitting stop index (defaults to end of string)
10substring_to_end = string[7:] # 'World!'
11
12# Using negative indices for slicing
13substring_negative = string[-6:-1] # 'World'
پارامتر step در سینتکس Slicing
سینتکس مربوط به تکنیک Slicing از پارامتر اختیاری به نام «قدم» یا step نیز پشتیبانی میکند. این پارامتر فاصله بین ایندکسهایی را مشخص میکند که شامل تکه مورد نظر میشوند. شکل استفاده از پارامتر step به صورت زیر است.
در کادر زیر، مثالی را درباره استفاده از این ایندکس پیادهسازی کردهایم.
1string = "Hello, World!"
2
3# Slicing with a step
4every_second_character = string[::2] # 'Hlo ol!'
5
6# Reversing a string using slicing with a negative step
7reversed_string = string[::-1] # '!dlroW ,olleH'
در بخشهای بعدی مطلب تکنیک قطعهقطعهسازی را همراه با جزئیات و مثالها بیشتری شرح دادهایم.
استفاده از حلقه برای دسترسی به کارکترها
برای دسترسی به کاراکترهای درون استرینگ، میتوان از حلقهها هم استفاده کرد. از حلقهها برای پیمایش بر روی هر کاراکتر به صورت مجزا در درون استرینگ استفاده میکنند. در کادر زیر استفاده از هر دو نوع حلقه for و while را با کمک مثال سادهای نمایش دادهایم.
1string = "Hello"
2
3# Using a for loop to access each character
4for char in string:
5 print(char)
6#Alternatively, you can use a while loop along with indexing:
7string = "Hello"
8index = 0
9
10# Using a while loop to access each character
11while index < len(string):
12 print(string[index])
13 index += 1
قطعه قطعه سازی استرینگ در پایتون
پایتون زبان برنامهنویسی اوپن سورسی است که فریمورکها و کتابخانههای فراوانی را نیز در اختیار کاربران قرار میدهد تا با توجه به نیاز خود از آنها استفاده کنند. از پایتون برای اهداف مختلفی مانند توسعه وب، تجزیهوتحلیل دادهها، یادگیری ماشین، هوش مصنوعی، محاسبات علمی و غیره استفاده میشود. در همه این موارد لازم است که بتوانیم به صورت حرفهای با استرینگها کار کنیم. به همین منظور میتوانید فیلم آموزش برنامه نویسی پایتون همراه با مثال های عملی را از فرادرس مشاهده کنید. لینک مربوط به این فیلم را در پایین نیز قرار دادهایم.
تکنیک، قطعهقطعهسازی استرینگ در پایتون ویژگی قدرتمندی است. این ویژگی به کاربران کمک میکند به هر زیر مجموعه یا قسمت خاصی از رشته که مد نظر دارند، دسترسی داشته باشند. برای انجام این کار فقط لازم است که محدودهای از ایندکسها را از قبل مشخص کنند. این توانایی، استخراج و دستکاری بخشهای خاصی از رشته اصلی را سادهتر میکند. در نتیجه مجبور به نوشتن کدهای حلقه به صورت کامل یا دستکاری رشته به صورت دستی نیستیم.
روش پایه استفاده از تکنیک Slicing
سینتکس پایه برای تکنیک Slicing، طبق مطالب بالا برابر با string[start:stop] است. همینطور که دانستیم، start ایندکس موقعیتی را نشان میدهد که قطعه مورد نظر شروع میشود و stop هم ایندکس محلی را نشان میدهد که زیر رشته مورد نظر به پایان میرسد. مقدار درون ایندکس start عضو زیررشته است ولی مقدار درون ایندکس stop جزئی از زیررشته نیست.
در کادر زیر، دو مثال ساده برای نمایش حالت پایه تکنیک Slicing را پیادهسازی کردهایم.
1string = "Hello, World!"
2
3# Slicing from index 0 to 5 (characters 0 through 4)
4substring = string[0:5] # 'Hello'
5
6# Slicing from index 7 to 12 (characters 7 through 11)
7substring = string[7:12] # 'World'
برای تسلط بر موارد مطرح شده در این مطلب نیاز به حل تمرینات زیاد دارید. به همین منظور پیشنهاد میکنیم که مطلب کدهای پایتون آماده کاربردی و ضروری برای برنامه نویسان مبتدی تا حرفه ای را از مجله فرادرس مطالعه کرده و بخصوص تمرینات حل شده درباره رشتهها را مرور کنید.
عدم استفاده از پارامترهای ایندکس
در تکنیک Slicing، میتوانیم ایندکسها را از سینتکس حذف کنیم. یعنی از پارامترهای start و stop استفاده نکنیم. با حذف کردن پارامتر اول یا start، زیر رشته از ابتدای رشته اصلی شروع میشود و با حذف پارامتر دوم یا stop، زیررشته تا به انتهای رشته اصلی ادامه پیدا میکند.
در کادر زیر مثالهایی را درباره حذف کرد ایندکسها از سینتکس Slicing مشاهده میکنید.
1string = "Hello, World!"
2
3# Omitting the start index (default is 0)
4substring_from_start = string[:5] # 'Hello'
5
6# Omitting the stop index (default is the end of the string)
7substring_to_end = string[7:] # 'World!'
8
9# Omitting both start and stop (returns the entire string)
10entire_string = string[:] # 'Hello, World!'
ایندکس های منفی
از ایندکسهای منفی نیز میتوانیم برای دسترسی به انتهای رشته استفاده کنیم. در زمینه Slicing، استفاده از ایندکسهای منفی باعث جداکردن زیر رشته از سمت انتهایی رشته اصلی میشود. برای مثال، ۱- به کاراکتر آخر رشته اشاره میکند و ۲- به کاراکتر یکی مانده به آخر رشته. در مثال زیر، استفاده از دو ایندکس منفی را برای جداسازی زیررشته نمایش دادهایم.
1string = "Hello, World!"
2
3# Slicing with negative indices
4substring_negative = string[-6:-1] # 'World'
Step در تکنیک Slicing
سینتکس Slicing از پارامتر اختیاری Step هم پشتیبانی میکند. این پارامتر همینطور که در بخشهای بالایی هم گفته شد به فاصله بین سینتکسها درون زیررشته اشاره دارد. در مثال زیر، روش استفاده از این پارامتر را پیادهسازی کردهایم.
1string = "Hello, World!"
2
3# Slicing with a step of 2 (every second character)
4every_second_character = string[::2] # 'Hlo ol!'
5
6# Slicing with a negative step (reverses the string)
7reversed_string = string[::-1] # '!dlroW ,olleH'
همینطور که میبینید استفاده از پارامتر Step باعث شده که تکنیک Slicing به صورت قدم به قدم با فاصلههای به اندازه Step اقدام به جداسازی کارکترهای درون استرینگ اصلی کند.
الحاق استرینگ ها در پایتون
الحاق استرینگها در پایتون شامل اتصال یک یا چند رشته به همدیگر و تشکیل رشته جدید است. این عملیات در وظایف مختلف برنامهنویسی، مانند موارد فهرست شده در زیر رایج است.
- تولید خروجی
- ساخت پیغام خاص برای نمایش به کاربران
- ایجاد ساختارهای داده
- و غیره
پایتون از چند رویکرد مختلف برای الحاق رشتهها پشتیبانی میکند. این رویکردهای متنوع، انعطافپذیری و راحتی بیشتری را برای کار در سناریوهای مختلف ارائه میدهند.
استفاده از عملگر «+»
استفاده از عملگر + راحتترین روش برای الحاق رشتههای مختلف و تولید رشته جدید در پایتون است. با کمک این روش به سادگی میتوانیم دو رشته را به یکدیگر متصل کرده یا انواع دیگری از داده را به رشتهای بچسبانیم.
در کادر زیر، مثالی را درباره استفاده از عملگر + برای اتصال دو رشته مختلف و اتصال دادهای از جنس عدد صحیح به رشته دیگری نمایش دادهایم.
1str1 = "Hello"
2str2 = "World"
3
4# Concatenating two strings
5concatenated = str1 + ", " + str2 + "!" # 'Hello, World!'
6
7# Combining strings with other data types
8result = "The answer is: " + str(42) # 'The answer is: 42'
در پایتون، طول رشته به تعداد کاراکترهای تشکیل دهنده رشته گفته میشود. این کاراکترها میتوانند شامل حروف الفبا، اعداد، نمادها و فضای خالی باشند. دانستن طول رشتهها، جنبه اساسی و ضروری از عملیات پردازش متن است. این آگاهی برای انجام صحیح طیف وسیعی از وظایف برنامه نویسی بسیار حیاتی است.
اندازه گیری طول استرینگ در پایتون
برای اندازهگیری طول استرینگ در پایتون، باید از یکی از متدهای رشته در پایتون استفاده کنیم. به این منظور تابع «درونی» len() را بهکار میبریم. این تابع جزو متدهای لیست در پایتون نیز هست. تابع len() به عنوان آرگومان رشتهای را میپذیرد و در خروجی تعداد کاراکترهای تشکیل دهنده آن را برمیگرداند. برای مثال در کادر زیر روش استفاده از این تابع را نمایش دادهایم.
1my_string = "Hello, World!"
2length = len(my_string)
3print(length) # Output: 13
در مثال بالا، عبارت len(my_string) عدد 13 را در خروجی برمیگرداند. زیرا رشته «Hello, World! » شامل ۱۳ کاراکتر از قبیل ویرگول و فضای خالی است.
مدیریت کاراکترهای چندبایتی
پایتون ۳، استرینگها را به عنوان توالی از کاراکترهای Unicode مدیریت میکند. به این معنا که کاراکترها را بهجای بایتها میشمارد. این مسئله به صورت خاص، در زمان کار کردن با کاراکترهای زبانهای انسانی مختلف مفید است. زیرا بعضی از این کاراکترها شامل چند بایت داده میشوند.
در مثال زیر، نمونهای از استفاده تابع len() را مشاهده میکنید.
1my_string = "你好"
2length = len(my_string)
3print(length) # Output: 2
در مثال بالا، عبارت len(my_string) در خروجی مقدار ۲ را برمیگرداند. زیرا در این عبارت دو کاراکتر زبان چینی وجود دارد. حتی با اینکه هر کاراکتر به صورت درونی احتمالا شامل چند بایت داده میشود.
طول استرینگ در پایتون و Whitespace
کاراکترهای «فضای خالی» (Whitespace) مانند فاصله، تب «t» و خط جدید «n» هم جزو طول رشته میشوند. در مثال زیر، شمارش این کاراکترها را با کمک متد len() نمایش دادهایم.
1my_string = "HellonWorld"
2length = len(my_string)
3print(length) # Output: 11
متدهای استرینگ در پایتون
متدهای استرینگ در پایتون، طیف وسیعی از عملکردها را برای اجرای انواع متفاوت عملیات و دستکاری رشتهها فراهم کردهاند. این متدها به برنامهنویسان کمک میکنند که عملیاتی مانند موارد فهرست شده در زیر را بر روی استرینگها اعمال کنند.
- تبدیل نوع از رشته به سایر انواع داده و برعکس
- جستوجو به دنبال زیر رشتهها در رشته اصلی
- جابهجایی زیر رشتهها در رشته بزرگتر
- تجزیه رشتهها به اجزای تشکیل دهنده آنها
- و غیره
آموزش و استفاده از این متدها، به میزان زیادی وظایف مربوط به استرینگها را سادهتر کرده و کمک میکند که کدهای نوشته شده روانتر و خواناتر شوند.
در ادامه این بخش با چند مورد از رایجترین متدهای رشته در پایتون آشنا میشویم.
متدهای str.lower و str.upper
متدهای str.lower() و str.upper() رشته جدیدی را از روی رشته داده شده برمیگردانند که به ترتیب در رشته برگشت داده شده، همه کاراکترها کوچک و بزرگ شدهاند. البته این متدها بر روی کارکترهای الفبای زبان انگلیسی کار میکنند. در کدهای زیر، مثالی از بهکار بردن این متدها را میتوان مشاهده کرد.
1string = "Hello, World!"
2lowercase = string.lower() # 'hello, world!'
3uppercase = string.upper() # 'HELLO, WORLD!'
متد str.replace
متد str.replace(old, new) همه رخدادهای زیر رشته مشخص شده old را در رشته اصلی str با زیر رشته مشخص شده new جایگزین میکند. در کادر زیر میتوان مثالی از بهکار بردن متد Replace در پایتون را مشاهده کرد.
1string = "Hello, World!"
2
3new_string = string.replace("World", "Python") # 'Hello, Python!'
متد str.split
متد Split در پایتون، رشتهای را به زیر رشتههای تشکیل دهنده آن تجزیه میکند و هر زیر رشته را به صورت عنصری در لیست جدیدی قرار داده و لیست نتیجه را به بیرون برمیگرداند. تجزیه زیر رشته اصلی بر حسب آرگومانی اتفاق میافتد که به این متد ارسال شده است. به صورت پیشفرض و در صورت عدم ارسال هیچ آرگومانی به این متد، اجزای تشکیل دهنده زیر رشته را از محل فاصله خالی بین آنها تشخیص داده و از هم جدا میکند.
1string = "Hello, World!"
2
3split = string.split(",") # ['Hello', ' World!']
توجه کنید که در خروجی کد بالا، یک فضای خالی قبل از کلمه World و به صورت چسبیده به آن وجود دارد. زیرا علامت ویرگول معیار جداسازی زیررشتههای این عبارت بود.
متد str.join
متد join() با استفاده از رشتهای به عنوان جداکننده یا حائل، تمام عناصر شی پیمایشپذیری مانند لیست را به یکدیگر چسبانده و رشته جدیدی را تولید میکند. در کادر زیر مثالی از استفاده متد join() را نمایش دادهایم. شکل خام سینتکس این متد str.join(iterable) است. آرگومان words همان شیء پیمایشپذیر است و پارامتر str - که در مثال پایین یک واحد فاصله است – حائل بین تکههای رشته نهایی را نشان میدهد.
1words = ["Hello", "World"]
2
3joined_string = " ".join(words) # 'Hello World'
متدهای str.find و str.index
این متدها برای جستوجوی اولین رخداد از زیر رشتهای در درون رشته اصلی بهکار برده میشوند. سپس ایندکس آن رخداد را به بیرون برمیگردانند. تنها تفاوت و مهمترین تفاوت آنها این است که در صورت پیدا نشدن زیر رشته مورد جستوجو در رشته اصلی تابع find در پایتون عدد ۱- برمیگرداند اما تابع Index در پایتون باعث برخواستن خطای استثنای «ValueError» میشود.
در کادر زیر، مثالی را درباره نحوه استفاده از متد find() پیادهسازی کردهایم. استفاده از متد index() هم دقیقا به همین صورت است.
1string = "Hello, World!"
2
3index = string.find("World") # 7
عدد خروجی برابر با 7 است. این عدد ایندکس اولین کاراکتر از زیر رشته مورد جستوجو را نشان میدهد.
استفاده زنجیره وار از متدهای استرینگ در پایتون
برای انجام دادن چندین عملیات مختلف به صورت متوالی پشت سر هم، میتوان متدهای استرینگ در پایتون را به صورت زنجیرهوار به یکدیگر متصل کرد. این کار باعث نوشتن کدهای بسیار سادهتر و خواناتر میشود.
در کادر زیر نمونهای از اتصال زنجیرهوار چند متد استرینگ را مشاهده میکنید.
1string = " Hello, World! "
2processed_string = string.strip().lower().replace("world", "Python")
3# 'hello, python!'
قالب بندی استرینگ
قالببندی استرینگ در پایتون، اشاره به فرایند ساخت رشتههای قالببندی شدهای دارد که از متغیرها، عبارتها یا سایر رشتهها به صورت نهفته استفاده میکنند. با این کار رشته قالببندی شده را میتوان به دفعات استفاده کرد. یعنی اینکه این رشته را میتوان با دادههای متنوعی شکل داد و در خروجی چاپ کرد. در واقع با کمک این تکنیک میتوانیم استرینگهایی با ساختارهای پویا ایجاد کنیم که که دادهها یا مقادیر را به شکلی ساختاریافته و قابل خواندن ترکیب میکنند.
پایتون برای قالببندی استرینگ از چند رویکرد مختلف استفاده میکند که هر کدام ویژگیها و سینتکس خاص خود را دارند.
استفاده از عملگر درصد
عملگر درصد«٪ » یکی از قدیمیترین ابزار پایتون برای قالببندی رشتهها است. این عملگر برای قالببندی، مکانهای مشخص شده و دلخواهی را در رشته علامتگذاری میکند. این مکانهای علامتگذاری شده، همان جاهایی هستند که مقادیر مورد نظر در زمان استفاده از استرینگ در آنجا جای میگیرند. این مقادیر خاص را باید درون تاپل یا دیکشنری ذخیره کنیم. نمونهای از استفاده عملگر ٪ را در کادر زیر مشاهده میکنید. دادههایی که در تاپل ذخیره شدهاند، با همان ترتیب چیدمان در مکانهای مشخص شده استرینگ جایگذاری میشوند.
1name = "Alice"
2age = 30
3formatted_string = "Name: %s, Age: %d" % (name, age) # 'Name: Alice, Age: 30'
استفاده از متد str.format
استفاده از متد str.format() باعث میشود که عملیات قالببندی استرینگ با انعطافپذیری بیشتر و به شکل خواناتری انجام شود. این متد به برنامهنویسان کمک میکند که برای مشخص کردن جایگاه مقادیر متغیر در استرینگ و وارد کردن داده به آن از آکولاد «{}» استفاده کنند.
1name = "Alice"
2age = 30
3formatted_string = "Name: {}, Age: {}".format(name, age) # 'Name: Alice, Age: 30'
استفاده از F-String
F-Strings یا «حروف الفبای رشتهای قالببندی شده» (Formatted String Literals) جدیدترین روش برای قالببندی استرینگ است. این روش که از پایتون ۳٫۶ به بعد معرفی شد، به توسعهدهندگان کمک میکند که به روشی بسیار روان و ساده به قالببندی استرینگ بپردازند. این تکنیک با جایگذاری عبارتها و متغیرها به صورت مستقیم و نهفته در متن استرینگ اصلی کار میکند.
در کادر زیر با کمک مثال سادهای روش استفاده از این رشته را پیادهسازی کردهایم. به کاراکتر f که قبل از رشته اصلی و بیرون علامت “” قرار داده شده توجه کنید. وجود این کاراکتر برای استفاده از این رویکرد قالببندی رشته الزامی است.
1name = "Alice"
2age = 30
3formatted_string = f"Name: {name}, Age: {age}" # 'Name: Alice, Age: 30'
تکنیک قالببندی F-Strings جایگزینی بسیار خواناتر و کارآمدتر برای قالببندی با روشهای استفاده از عملگر ٪ و str.format() است. این برتری به طور خاص در زمان کار با عبارتهای پیچیده به همراه چندین متغیر مختلف به چشم میآید.
پیمایش بر روی استرینگ در پایتون
نوع استرینگ یا همان رشته، جزو بنیادیترین نوعهای داده در همه زبانهای برنامهنویسی است. از طرفی کار کردن با نوع String بسیار ساده و روان است. برای آموزش این عملیات میتوانید فیلم آموزش رایگان رشته و متن در برنامه نویسی پایتون را در فرادرس مشاهده کنید. برای کمک، لینک این فیلم را در پایین نیز قرار دادهایم.
عمل پیمایش بر روی استرینگ در پایتون به برنامهنویسان کمک میکند که به تمام کاراکترهای درون رشته به صورت یک به یک دسترسی پیدا کنند. این عمل معمولا با استفاده از ساختارهای حلقه در برنامه نویسی انجام میشود. در این بخش از مطلب، پیادهسازی این عملیات را با کمک هر دو حلقه for و while نمایش دادهایم.
استفاده از حلقه for
با کمک حلقه for پایتون هم بهسادگی میتوانیم بر روی اشیاء پیمایشپذیر مانند رشته، لیست و غیره پیمایش کنیم. برای این حلقه فقط باید محدودهای تعیین کرد و این کار را با کمک خود شیء پیمایشپذیر انجام میدهیم.
در کادر زیر با کمک مثال کوچک و سادهای روش پیمایش کاراکتر به کارکتر استرینگ داده شده به حلقه را مشاهده میکنید.
1string = "Hello"
2for char in string:
3 print(char)
استفاده از حلقه while
پیمایش بر روی رشتهها برای اجرای عملیات خاصی که باید به صورت کاراکتر به کاراکتر انجام شوند – مانند موارد فهرست شده در زیر – بسیار مفید است.
- شماردن تعداد کاراکترها یا تعداد تکرار کاراکتر خاصی در رشته
- بررسی و جستوجو به دنبال وجود الگوی خاصی در استرینگ
- تبدیل کاراکتر خاصی به نوع دیگری از داده یا کاراکتر
این عملیات را با استفاده از حلقه While در پایتون نیز میتوان انجام داد. البته حلقه while دارای شمارنده درونی نیست و برای انجام عملیات شمارش در حلقه باید کمی به آن کمک کرد. در کادر زیر مثال ساده بالا را با استفاده از حلقه while پیادهسازی کردهایم.
1string = "Hello"
2index = 0
3while index < len(string):
4 print(string[index])
5 index += 1
آموزش پایتون با کمک فیلم های پروژه محور فرادرس
کار بر روی تمرینات پروژه محور یکی از بهترین راهها برای تمرین و آموزش نکات مهم در برنامهنویسی است. استفاده از انواع تکنیکها و متدهای آموخته شده در پیادهسازی پروژههای عملی باعث تقویت مهارت در استفاده و ارتباط برقرار کردن بین این تکنیکها میشود. به طور کل، بررسی و انجام پروژههای مربوط به سناریوهای واقعی، بهترین روش برای تقویت تواناییها و آموزش روش ترکیب تکنولوژیهای مختلف است. به این دلیل، فرادرس، فیلمهای بسیار خوبی درباره آموزش پروژه محور پایتون تولید و ارائه کرده است. در این بخش از مطلب پنج مورد از این فیلمها را در ارتباط با پروژههای واقعی زبان برنامهنویسی پایتون معرفی کردهایم.
در صورت تمایل به دیدن فیلمهای بیشتر با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی رفته و گزینههای متنوع موجود را مشاهده کنید.
چگونه استرینگ های پایتون را با یکدیگر مقایسه کنیم؟
مقایسه کردن استرینگها در پایتون شامل بررسی موارد زیر است.
- برابری: آیا دو رشته داده شده با یکدیگر برابر هستند یا نه.
- برتری: کدام یک از دو رشته داده شده از لحاظ ترتیب حروف الفبا قبل از دیگری میآید.
با هدف مقایسه استرینگها در پایتون چند روش مختلف ارائه شده است. در این بخش دو روش اصلی را معرفی کردهایم.
استفاده از عملگرهای مقایسه ای
برای مقایسه دو رشته با هم، برنامهنویسان پایتون میتوانند از عملگرهای استاندارد مقایسهای استفاده کنند. این عملگرها شامل موارد == و != و < و > و <= و >= میشوند.
1str1 = "apple"
2str2 = "banana"
3result = str1 == str2 # False
4result = str1 < str2 # True (since 'apple' comes before 'banana' in dictionary order)
استفاده از متد str.compare
متد str.compare() برای مقایسه دو رشته با یکدیگر بهکار برده میشود. این متد در خروجی یکی از سه حالت زیر را برمیگرداند.
- 0 : اگر هر دو رشته برابر باشند مقدار ۰ به بیرون برگشت داده میشود.
- -1 : اگر رشته اول از جهت حروف الفبایی کمتر از رشته دوم باشد، در خروجی مقدار ۱- برگشت داده میشود.
- 1 : اگر رشته اول از لحاظ ترتیب حروف الفبا بزرگتر از رشته دوم باشد، در خروجی مقدار ۱ برگشت داده میشود.
جمعبندی
استرینگ در پایتون ابزاری بدون جایگزین است. بنابراین برای همه برنامه نویسان پایتون ضروری است که با این نوع داده و تکنیکها و متدهای کار با آن آشنا باشند. زبان برنامه نویسی پایتون مجموعهای غنی از ویژگیها و توابع را برای کار با رشتهها و اجرای عملیاتی مانند پردازش رشته فراهم کرده است. با تسلط بر مفاهیم و روشهای بیان شده در این مطلب از مجله فرادرس، میتوانیم از تمام ویژگیهای استرینگ در پایتون برای نوشتن کدهای تمیزتر، کارآمدتر و واضحتر استفاده کنیم.
فرقی نمیکند که در حال ساخت وباپلیکیشن، «پایپلاینهای مخصوص پردازش داده» (Data Processing Pipelines) یا مدلهای «یادگیری ماشین» (Machine Learning) هستید. تسلط به استرینگ در پایتون و متدهای آن به شما برای اجرای طیف وسیعی از وظایف به صورت سادهتر کمک میکند. به همین دلیل در این مطلب از ابتدا و معرفی نوع استرینگ شروع کرده و به مرور تکنیکهای تعریف و قالببندی و استفاده از آن را بررسی کردهایم.
source