رشته یا String چیست؟
هر گاه نیاز به کار با متن داشته باشیم، متن ها را در قالب رشته تعریف میکنیم. نام دیگر رشته، string است.
کارکتر یا Charachter چیست؟
به هر حرف از یک متن، کارکتر گفته میشود. به عبارتی دیگر، هر رشته از چندین کارکتر تشکیل شده است.
تعریف رشته
تعریف رشته به سه شکل امکان پذیر است.
روش اول، کوتیشن ' یا دابل کوتیشن "
برای ایجاد یک رشته در پایتون کافیست متن خود را بین دو کوتیشن ' یا دو دابل کوتیشن " قرار دهید. به عنوان مثال:
string1 = 'Hello, World!'
string2 = "Python is awesome"روش دوم، سه تا کوتیشن یا سه تا دابل کوتیشن
روش فوق برای رشته های کوتاه که در یک خط قابل تعریف باشند قابل استفاده است. اگر متن شما چند خط باشد، بهتر است با قرار دادن آن بین سه کوتیشن ''' یا سه دابل کوتیشن """ تعریف کنید.
multiline_string = '''
This is a multiline string.
It can contain multiple lines.
This is its third line.
'''
print(multiline_string)روش سوم، استفاده از \n
روشی دیگر برای تعریف رشته چند خطی استفاده از کارکتر \n است. به عبارت دیگر، ما میتوانستیم کد بالا را به شکل زیر نیز تعریف کنیم.
multiline_string = '\nThis is a multiline string.\nIt can contain multiple lines.\nThis is its third line.\n'
print(multiline_string)استفاده از این روش را برای تعریف رشته های چند خطی پیشنهاد نمیکنم. پس این سوال ایجاد خواهد شد که دلیل اینکه این روش را معرفی کردم چیست؟
گاهی خود پایتون رشته ها را اینگونه ذخیره میکند و ما برای اینکه بتوانیم درک بهتری از عملکرد پایتون داشته باشیم باید این روش را نیز بلد باشیم. برای اینکه منظورم را بهتر متوجه بشوید لطفا به کد زیر توجه کنید.

کد بالا را در python shell اجرا کرده ایم. به تحلیل این کد توجه کنید.
- بخش اول: در این بخش یک رشته چند خطی را طوری تعریف کرده ایم که برای یک انسان خوانا باشد.
- بخش دوم: در این بخش همان رشته را
printگرفته ایم. همانطور که ملاحظه میکنید مطابق انتظار، این رشته در چند خط چاپ شده است. - بخش سوم: در این بخش، مقداری که پایتون داخل
multiline_stringذخیره کرده را استعلام میگیریم. این در خط همانطور که مشاهده میکنید، هر جایی که خط جدیدی ایجاد کرده ایم، پایتون به جایش\nقرار داده است.
در کد بالا مشاهده کردید که خود پایتون به جای new line ها، \n قرار داده است. پس لازم است معنی آن و عملکردش را در برنامهنویسی بدانیم که بتوانیم درک بهتری از پایتون داشته باشیم.
چرا رشته را هم با ' و هم با " میتوان تعریف کرد؟
فرض کنید برای تعریف رشته فقط مجاز به استفاده از ' بودیم. در اینصورت اگر میخواستیم جمله ای که خودش ماهیتا کوتیشن دارد را بنویسیم چه کار میکردیم؟
مثلا جمله I’m Mohammadreza را چطور باید تعریف میکردیم؟ به نظر آیا میتوان به شکل زیر تعریف کرد؟
text = 'I'm Mohammadreza'خیر امکان پذیر نیست زیرا با خطای زیر مواجه خواهیم شد.
text = 'I'm Mohammadreza'
^
SyntaxError: invalid syntax
همانطور که میبینید، علامت ^ زیر دومین کوتیشن بیانگر این است که اینجا یک مشکل داریم. حالا چطور این مشکل را میتوانیم حل کنیم؟
کافیست یک بک اسلش کنارش قرار دهیم.
text = 'I\'m Mohammadreza'دلیل این مشکل این است که اگر بخواهیم رشته را با ' تعریف کنیم دیگر نمیتوانیم درون خود آن از ' استفاده کنیم مگر اینکه قبل از هر کدام از آنها بک اسلش \ قرار دهیم. این روش زیاد جالب نیست چون خوانایی خوبی ندارد. به همین دلیل به جای استفاده از این روش ناخوانا، رشته را با " تعریف کرده و داخلش به راحتی از ' استفاده خواهیم کرد.
text = "I'm Mohammadreza"حالا تصور کنید بخواهیم جمله I’m “Mohammadreza” را به عنوان یک رشته در پایتون تعریف کنیم. این جمله چطور باید ذخیره و نگهداری شود؟
text = '''I'm "Mohammadreza"'''پس کاربرد ''' یا """، صرفا تعریف رشته های چند خطی نیست، بلکه میتوان اجازه داد تا ترکیب های پیچیده ای از ' و " را همزمان در یک رشته به عنوان بخشی از یک رشته نگه داشت و با آنها کار کرد.
عملگر های رشته
عملگر +
برای چسباندن رشته ها به یکدیگر میتوان از این عملگر استفاده کرد.
first_name = 'Mohammadreza'
last_name = 'Kasaiee'
fullname = first_name + ' ' + last_name
print(full_name) # Mohammadreza Kasaieعملگر *
اگر رشته را در یک عدد ضرب کنید، آنگاه آن رشته، به آن تعداد تکرار خواهد شد.
pattern = '@'
result = pattern * 5
print(result) # @@@@@عملگر in
کمک میکند بفهمیم که یک رشته در رشته ای دیگر وجود دارد یا خیر. اگر وجود داشته باشد مقدار True و اگر نداشته باشد مقدار False را نمایش خواهد داد.
print('M' in 'Mohammadreza') # True
print('reza' in 'Mohammadreza') # True
print('Reza' in 'Mohammadreza') # Falseعملگر \n
با استفاده از این عملگر میتوان خط جدید یا اصطلاحا new line ایجاد کرد. به ازای هر کدام از \n ها یک خط جدید چاپ خواهد شد. عملگر \n فقط زمانی به new line تبدیل میشود که تابع print آن را پردازش کند. در صورتی که مقدار آن را به صورت مستقیم در python shell نمایش دهید، این کارکتر خط جدیدی چاپ نمیکند.
>>> text = 'line1\nline2'
>>> print(text)
line1
line2
>>> text
'line1\nline2'
همانطور که در کد بالا مشاهده میکنید، اگر text را print کنیم، به جای \n خط جدیدی چاپ میشود ولی اگر مقدارش را مستقیم فراخوانی کنیم، همان کارکتر نمایش داده میشود.
فرض کنید برای انجام عملیاتی، نیاز است تا فایلی به آدرس C:\new_folder\new_text.txt را در ویندوز فراخوانی کنید. بدین منظور کدی مشابه زیر را خواهید نوشت.
file_path = 'C:\new_folder\new_text.txt'
# سایر کد های برنامه
print(file_path)
# سایر کد های برنامهوقتی مسیر این فایل را print کنید، انتظار دارید C:\new_folder\new_text.txt چاپ شود اما خروجی به شکل زیر خواهد بود زیرا پایتون هر جا \ را در کنار n ببیند، یک new line چاپ میکند.
C:
ew_folder
ew_text
برای حل این مشکل دو راه داریم.
راه اول، استفاده از \ اضافی
اگر کد را به شکل زیر اصلاح کنیم مشکل حل میشود.
file_path = 'C:\\new_folder\\new_text.txt'
# سایر کد های برنامه
print(file_path)
# سایر کد های برنامهراه دوم، تعریف raw string
raw string یا رشته خام، رشته ای است که پایتون هیچکدام از کارکتر های کنترلی را نسبت به آن در نظر نمیگیرد. اگر یک raw string را چاپ کنید، همه چیز دقیقا همانطور که در آن نوشته شده است چاپ خواهد شد.
برای اینکه رشته فوق را به صورت یک raw string تعریف کنیم، کافیست تعریف رشته با یک r شروع شود.
file_path = r'C:\new_folder\new_text.txt'
# سایر کد های برنامه
print(file_path)
# سایر کد های برنامه