رشته در زبانهای برنامهنویسی یکی از پرکاربردترین ساختمانهای دادهای هستند که تقریباً در تمام پروژهها با آنها سر و کار داریم. رشته در پایتون هم از این موضوع مستثنا نیست! در پایتون یک ساختمان داده پیشفرض به نام str وجود دارد که به کمک آن میتوان رشتههای فارسی، انگلیسی یا دارای کاراکترهای خاص ایجاد کرده و با آنها کارهای جذابی انجام دهیم.
فهرست محتوای آموزش
• تعریف رشته در پایتون
تعریف رشته در پایتون
در زبان برنامه نویسی پایتون، مانند بسیاری دیگر از زبانها، یک رشتهی متنی با علامت نقل قول انگلیسی (کوتیشن) دوتایی یا تکی مشخص میشود.
"! This is a String in Python "
تقریباً میتوان گفت که این دو نوع تعریف تفاوت خاصی با هم ندارند. اما در جایی که میخواهید درون متن خود از یکی از این علامتها استفاده کنید، بهتر است که علامت مشخصکنندهی رشته، از آن نوع دیگر باشد. (یکی " و دیگری ')
اندیس گذاری رشتهها در پایتون
معمولاً برای چاپ رشته در پایتون از دستور ()print استفاده میشود. این دستور در سادهترین حالت یک ورودی گرفته و آن را در کنسول برنامه چاپ میکند. (یادگیری دقیقتر: print پایتون)
print( "Hello World!" )
در قطعه کد زیر یک رشتهی متنی در پایتون تعریف کرده، آن را به متغیری به نام name منسوب کردیم. سپس این مقدار را در خروجی نمایش دادهایم. (بیشتر بخوانید: متغیر در پایتون)
"name = "omid
تعریف رشته چند خطی
برای تعریف یک رشتهی متنی چند خطی در پایتون، در ابتدا و انتهای رشته از علامت " یا ' سه بار استفاده میکنیم.
,txt = """Lorem ipsum dolor sit amet
برش دادن رشته در پایتون
پیشتر گفتم که میتوان به رشته مانند یک لیست دسترسی پیدا کرد. تمام ویژگیها و ترفندهایی که برای دسترسی به لیستها وجود دارد، برای رشتهها نیز صدق میکند.
"print( txt[ 4:7 ] )
اگر مقدار ایندکس وارد شده خارج از محدودهی رشته باشد، با خطای IndexError: string index out of range مواجه خواهیم شد.
عملگرها و توابع پرکاربرد رشته پایتون
در ادامه توابع مختلفی برای کار با رشتهها در پایتون معرفی خواهیم کرد؛ اما چهار مورد از پر کاربردترین آنها عبارتاند از:
تابع/عملگر | شرح عملیات |
()len | رشته را به عنوان ورودی گرفته و اندازهی آن را به ما میدهد. |
()str | ورودی خود را تبدیل به رشته کرده و خروجی میدهد. |
+ | برای اتصال دو رشته در پایتون به یکدیگر استفاده میشود. |
== | برای بررسی برابر بودن دو رشته با هم کاربرد دارد. (مقایسه رشته) |
کار با رشته در پایتون
جداسازی رشته با کاراکتر خاص
فرض کنید اطلاعاتی را از کاربر گرفته و میخواهید عملیات تبدیل رشته به لیست در پایتون را انجام دهید. این کار شاید در نظر اول بسیار سخت و مشکل به نظر برسد!
"grades_str = "18,17.5,20,14,16
متد ()splitیک ورودی میگیرد که به نام جداکننده (delimeter) شناخته میشود. جداکننده همان کاراکتر یا رشتهای است که دادههای ما را از یکدیگر تفکیک کرده است. در رشتهی ما، ویرگول (یا ,) جداکننده نمرات خواهد بود.
"grades_str = "18,17.5,20,14,16
خروجی این قطعه کد، یک لیست شامل تمام نمرات خواهد بود.
['18', '17.5', '20', '14', '16']
جداکننده میتواند هر چیزی باشد، یک حرف انگلیسی، یک علامت، یک عدد یا حتی یک رشتهی دیگر! مثلاً در قطعه کد زیر رشتهی مورد نظر را با رشته "step" جدا شده است.
"string = "step 1: hello step 2: world step 3: run step 4: python
دلیل ایجاد شدن یک رشتهی خالی در ابتدای لیست این است که کلمهی جداکننده در ابتدای رشته قرار گرفته است.
جستجو در رشته در پایتون
• ورودی اول، کاراکتر یا رشتهی مورد جستجوی ماست.
خروجی این تابع یک عدد است. اگر کاراکتر تعریف شده در رشته وجود داشت، اندیس اولین اتفاق (اولین جایی که کاراکتر در رشته دیده شده) به ما بازگردانده میشود. در غیر این صورت عدد -1 را به عنوان خروجی خواهیم داشت.
"!string = "Hello and Welcome to KabirApp WebSite
print( string.find("c") ) # 13
print( string.find("Kabir") ) # 21
اگر میخواهید جستجوی خود را محدود به بخشی از رشتهی مورد نظر کنید، میتوانید آرگومان دوم و سوم را نیز تعریف کنید؛ در غیر این صورت، جستجو در تمام رشته انجام میشود. همچنین اگر در حال جستجوی بیش از یک کاراکتر در متن باشید، مقدار خروجی تابع، مشخص کنندهی شروع نقطهی تطابق در متن است.
ساخت رشته ساختارمند (فرمت دهی رشتهها)
گاهی لازم داریم عملیات قالبدهی به رشتهها در پایتون یا فرمت دهی آنها را انجام دهیم. فرض کنید میخواهیم یک رشته و یک عدد را در کنار هم نمایش دهیم. مثلاً، نمرهی دانشجو را در خروجی چاپ کنیم، چیزی شبیه متن زیر:
Your Grade is: 17.5
اولین کاری به ذهنمان میرسد استفاده از عملگرد + برای افزودن نمره به رشتهی پیغام و در نهایت چاپ آن است. برای این کار، کد زیر را نوشته و اجرا میکنیم.
grade = 17.5
print( "Your Grade is: " + grade )
با اجرای کد بالا، خطای جمع کردن رشته با عدد حاصل میشود!
متن خطا واضح است! امکان الصاق رشته و یک مقدار عددی وجود ندارد! دو راهحل داریم:
راهحل اول: استفاده از تابع str برای تبدیل عدد به رشته در پایتون
اولین راهحل تبدیل نمره (عدد) به رشته به کمک تابع ()strاست. این تابع یک ورودی گرفته و به عنوان خروجی یک رشته از آن تحویل میدهد.
grade = 17.5
print( "Your Grade is: " + str(grade) )
راهحل دوم: فرمتدهی رشته با متد format
اما راهحل دوم استانداردتر و حرفهایتر خواهد بود. برای این کار به جای مقادیر متغیری که قرار است در رشته قرار بگیرد علامت {} را قرار میدهیم.
سپس به کمک صدا زدن متد ()formatروی رشتهی مورد نظر، مقادیر متغیر خود را به آن داده و رشتهی نهایی را ایجاد میکنیم.
برای درک بهتر روند به قطعه کد زیر توجه کنید.
grade = 17.5
{ } : "msg = "Your Grade is
print( msg.format(grade) )
Result: Your Grade is: 17.5 #
تابع ()formatبه هر تعداد دلخواهی میتواند ورودی بگیرد. در حقیقت شما میتوانید به هر تعداد که نیاز دارید، درون یک رشته متغیر تعریف کنید. برای یادگیری دقیق این تابع، به آموزش زیر مراجعه کنید:
پیمایش رشته در پایتون
با استفاده از حلقهها در پایتون میتوان در یک رشته پیمایش کرد. اولین ایده که احتمالاً به ذهن خودتان هم رسیده، استفاده از اندیسها برای دسترسی به تک تک کاراکترهای رشته است.
"txt = "A test text from KabirApp
:for i in range( len(txt) )
print( txt[i] )
در این قطعه کد یک متن را با استفاده از حلقهی for پیمایش کرده و تک تک کاراکترهای آن را چاپ میکنیم. همین کد با حلقهی while به صورت زیر خواهد شد.
"txt = "A test text from KabirApp
i = 0
:while i < len( txt )
print( txt[i] )
i += 1
یک ترفند جذاب و ساده برای پیمایش تک به تکِ کاراکترهای رشته، استفاده از in در حلقهی for است. ساختار این پیمایش به صورت زیر است.
:for char in string
Do something with char#
این نوع پیمایش بسیار ساده بوده و از نظر مفهوم کدنویسی نیز بسیار مناسب است. (به هر کاراکتر در رشتهی …)
قطعه کد پیمایش درون رشته در پایتون به این روش به صورت زیر خواهد شد.
"txt = "A test text from KabirApp
:for char in txt
print( char )
توابع مهم رشته پایتون
از آن جایی که رشتهها کاربردهای بسیاری در برنامه نویسی دارند، توابع مختلف و نسبتاً زیادی برای آنها وجود دارد. در این قسمت 8 مورد از مهمترین توابعی که ممکن است با آنها بیشتر سر و کار داشته باشید را معرفی میکنیم.
تمام این توابع به صورت متد و بر روی رشته صدا زده میشوند. یعنی اگر اسم تابع ()funcبوده و متغیر رشتهی ما s باشد، فراخوانی آن به صورت ()s.funcخواهد بود.
• ()lower: تبدیل حروف موجود در رشته به حروف کوچک (در زبان انگلیسی)
• ()upper: تبدیل حروفِ رشته به حروف بزرگ
• ()strip: حذف فضای خالی (spaceهای اضافی) ابتدا و انتهای رشته
• ()count: تعداد تکرار کلمه یا کاراکتری که به عنوان ورودی گرفته را در رشته محاسبه میکند.
• ()isdigit: در صورتی که تمام کاراکترهای موجود در رشته عدد باشند، True و در غیر این صورت False میدهد.
• ()index: اندیس شروع کلمه یا کاراکتری که به عنوان ورودی گرفته را در رشته مشخص میکند. تفاوت آن با متد find این است که اگر مقدار مورد نظر را پیدا نکند، برنامه با خطا مواجه خواهد شد.
جایگزینی کلمات در رشته پایتون
اگر بخواهیم یک کلمه یا کاراکتر را با کلمه یا کاراکتر دیگری در رشته جایگزین کنیم، از متد ()replaceاستفاده میکنیم.
این تابع روی رشتهی مورد نظر صدا زده شده و دو ورودی میگیرد:
• ورودی اول: مقدار قدیمی
• ورودی دوم: مقدار جدید و جایگزین
در قطعه کد زیر تمام حروف e را به o تبدیل کردهایم.
"! txt = "Hello Dear KabirApp.com Users
print( txt.replace('e', 'o') )
!Hollo Doar KabirApp.com Usors#
اگر به جای کاراکترها یک کلمه یا عبارت هم جایگزین کنیم، عملیات جایگزینی بدون هیچ مشکلی اجرا خواهد شد.
"! txt = "Hello Dear KabirApp.com Users
print( txt.replace('Users', 'Admins') )
! Hello Dear KabirApp.com Admins#
تبدیل لیست به رشته در پایتون
اگر یک لیست از رشتهها یا کلمات دارید که میخواهید با اتصال آنها یک رشته ایجاد کنید، میبایست از متد ()joinاستفاده کرد.
تابع ()joinیک ورودی میگیرد که میبایست از نوع تکرارگر در پایتون باشد. لیستها و تاپلها نیز نوعی تکرارگر (iterable) هستند.
این تابع تک تک اعضای تکرارگری که به عنوان ورودی گرفته شده را با رشته یا کاراکتری که روی آن صدا زده شده به هم وصل میکند.
بگذارید با یک مثال درک موضوع را راحتتر کنم. فرض کنید لیستی از اسامی افراد داریم که میخواهیم تمام آنها را درون یک رشته قرار داده و آنها را به کمک , از یکدیگر جدا کنیم. برای این کار خط دوم کد زیر را اجرا میکنیم.
lst = ["omid", "negar", "sara", "arian"]
string = ','.join( lst )
print(string)
omid,negar,sara,arian #
جمعبندی: رشته در پایتون
در این مقاله به آموزش جامع رشته در پایتون پرداختیم. با نحوه تعریف رشته آشنا شده و کار با رشتهها در پایتون را دیدیم. حداقل 13 تابع پرکاربرد را شناخته و نحوه استفاده از آنها را آموختیم.
دانستیم که با استفاده از عملگر + بین دو رشته، میتوان آنها را به یکدیگر متصل کرد. با تابع ()splitعملیات تبدیل رشته به لیست در پایتون را انجام داده و برای تبدیل لیست به رشته در پایتون از متد ()joinاستفاده کردیم.
به نظر شما چه تابع دیگری در کار با رشتههای پایتون پرکاربرد است که ما معرفی نکردهایم ؟ لطفاً آن را از قسمت دیدگاهها با همه به اشتراک بگذارید.
نام | تعداد آزمون | میزان موفقیت | |
---|---|---|---|
َAmeneh Darvishzadeh | 1 | 100/00 % | |
Mehrad Hashemi | 1 | 100/00 % | |
Noushmehr Norsobhi | 1 | 100/00 % | |
محمدحسین میرزایی | 1 | 100/00 % | |
مهدی حسین پور آقائی | 1 | 100/00 % | |
Farnoush Toghiany | 21 | 98/36 % | |
zahra namdari | 46 | 98/21 % | |
یاسمن محمدی پور | 4 | 98/08 % | |
Tara Mohammadi | 3 | 96/43 % | |
yasaman mohamadipur | 51 | 95/86 % | |
مهدی هنرمند | 1 | 95/24 % | |
محمدجواد ملائی اردستانی | 3 | 94/44 % | |
Arzhang Saberi | 4 | 93/33 % | |
Soheila Karimi | 124 | 92/73 % | |
aram farhmand | 10 | 92/31 % | |
یاشار اسکندری | 98 | 91/14 % | |
عباس پورمیدانی | 1 | 90/00 % | |
پریسا سلوکی شهرضایی | 72 | 89/49 % | |
ارشیا قلمکاری | 33 | 89/23 % | |
Matin Azimipour | 30 | 88/17 % |