سوالی دارید؟
تمایل دارید صفحه اینستاگرام کبیر را مشاهده نمایید؟

محتوای الکترونیکی

صفحه اصلی محتوای الکترونیکی

آموزش رشته در پایتون و ترفندهای کار با رشته پایتون

آموزش رشته در پایتون و ترفندهای کار با رشته پایتون

رشته در زبان‌های برنامه‌نویسی یکی از پرکاربرد‌ترین ساختمان‌های داده‌ای هستند که تقریباً در تمام پروژه‌ها با آن‌ها سر و کار داریم. رشته در پایتون هم از این موضوع مستثنا نیست! در پایتون یک ساختمان داده پیش‌فرض به نام str وجود دارد که به کمک آن می‌توان رشته‌های فارسی، انگلیسی یا دارای کاراکترهای خاص ایجاد کرده و با آن‌ها کارهای جذابی انجام دهیم.رشته در پایتون یک نوع تغییرناپذیر (immutable) است. به این معنا که پس از تعریف یک رشته، نمی‌توانیم آن را تغییر دهیم. برای مثال اگر یک رشته به صورت test داشته باشیم، نمی‌توانیم آن را به te3t تبدیل کنیم!برای اعمال تغییرات روی یک رشته، می‌بایست رشته‌ی جدیدی ایجاد کرد. در نتیجه با اعمال تغییرات روی یک رشته، رشته‌ای جدید خواهیم داشت.در این مقاله به طور جامع مبحث رشته‌ها در پایتون را بررسی کرده و با متدها، توابع و ترفندها آن آشنا می‌شویم.

 

فهرست محتوای آموزش

تعریف رشته در پایتون

o تعریف رشته چند خطی

o برش دادن رشته در پایتون

o عملگرها و توابع پرکاربرد رشته پایتون

کار با رشته در پایتون

o جداسازی رشته با کاراکتر خاص

o جستجو در رشته در پایتون

o ساخت رشته ساختارمند (فرمت دهی رشته‌ها)

o پیمایش رشته در پایتون

توابع مهم رشته پایتون

o جایگزینی کلمات در رشته پایتون

o تبدیل لیست به رشته در پایتون

جمع‌بندی: رشته در پایتون

 

تعریف رشته در پایتون

در زبان برنامه نویسی پایتون، مانند بسیاری دیگر از زبان‌ها، یک رشته‌ی متنی با علامت نقل قول انگلیسی (کوتیشن) دوتایی یا تکی مشخص می‌شود.

 

"This is a String in Python "

'! This is another String in this code '

"این یک رشته متنی در پایتون است"

"? What is the result of 2 + 2  "

 

تقریباً می‌توان گفت که این دو نوع تعریف تفاوت خاصی با هم ندارند. اما در جایی که می‌خواهید درون متن خود از یکی از این علامت‌ها استفاده کنید، بهتر است که علامت مشخص‌کننده‌ی رشته، از آن نوع دیگر باشد. (یکی " و دیگری ')رشته‌ها مانند لیست در پایتون، دارای اندیس است. اندیس‌های رشته نیز دقیقاً مشابه لیست‌ها، از ابتدا با صفر شروع شده و از انتهای آن با عدد -1 مشخص می‌شود.

 

اندیس گذاری رشته‌ها در پایتون

 

معمولاً برای چاپ رشته در پایتون از دستور ()print استفاده می‌شود. این دستور در ساده‌ترین حالت یک ورودی گرفته و آن را در کنسول برنامه چاپ می‌کند. (یادگیری دقیق‌تر: print پایتون)

 

print( "Hello World!" )

 

در قطعه کد زیر یک رشته‌ی متنی در پایتون تعریف کرده، آن را به متغیری به نام name منسوب کردیم. سپس این مقدار را در خروجی نمایش داده‌ایم. (بیشتر بخوانید: متغیر در پایتون)

 

"name = "omidprint( name )

 

تعریف رشته چند خطی

برای تعریف یک رشته‌ی متنی چند خطی در پایتون، در ابتدا و انتهای رشته از علامت " یا ' سه بار استفاده می‌کنیم.مشابه کد زیر که یک پیام چهار خطی را با سه بار دابل کوتیشن تعریف کرده و درون متغیر txt ریخته‌ایم.

,txt = """Lorem ipsum dolor sit amet,consectetur adipiscing elitsed do eiusmod tempor incididunt""".ut labore et dolore magna aliqua

 

برش دادن رشته در پایتون

پیش‌تر گفتم که می‌توان به رشته مانند یک لیست دسترسی پیدا کرد. تمام ویژگی‌ها و ترفندهایی که برای دسترسی به لیست‌ها وجود دارد، برای رشته‌ها نیز صدق می‌کند.به کمک علامت [ ] در جلوی نام متغیر رشته‌ای، می‌توان کاراکتری که در خانه‌ی مورد نظر وجود دارد را فراخوانی کرد.اگر متغیر ما (متغیر s) حاوی رشته 'omid' باشد، s[2] مقدار i را برگردانده و s[-1] کاراکتر d را برمی‌گرداند.برای برش دادن بخشی از یک رشته در پایتون، نیز از ترفندهای کار با لیست پایتون استفاده می‌کنیم. در قطعه کد زیر، عبارتی را در متغیر txt ذخیره کرده ولی صرفاً کاراکترهای خانه‌ی 4، 5 و 6 را چاپ کرده‌ایم.

 

"print( txt[ 4:7 ] )

 

اگر مقدار ایندکس وارد شده خارج از محدوده‌ی رشته باشد، با خطای IndexError: string index out of range مواجه خواهیم شد.

 

عملگرها و توابع پرکاربرد رشته پایتون

 

در ادامه توابع مختلفی برای کار با رشته‌ها در پایتون معرفی خواهیم کرد؛ اما چهار مورد از پر کاربردترین آن‌ها عبارت‌اند از:

 

تابع/عملگرشرح عملیات
()lenرشته را به عنوان ورودی گرفته و اندازه‌ی آن را به ما می‌دهد.
()strورودی خود را تبدیل به رشته کرده و خروجی می‌دهد.
+برای اتصال دو رشته در پایتون به یکدیگر استفاده می‌شود.
==برای بررسی برابر بودن دو رشته با هم کاربرد دارد. (مقایسه رشته)

 

کار با رشته در پایتون

ما برنامه‌نویس‌ها از رشته در برنامه‌هایمان به وفور استفاده می‌کنیم. از گرفتن ورودی در پایتون از کاربر گرفته تا پردازش داده‌های متنی و کارهایی سنگین‌تر و بزرگ‌تر!در ادامه با چهار ترفند کار با رشته در پایتون آشنا خواهید شد. پس از آن نیز توابع کاربردی رشته را بررسی می‌کنیم.

 

جداسازی رشته با کاراکتر خاص

فرض کنید اطلاعاتی را از کاربر گرفته و می‌خواهید عملیات تبدیل رشته به لیست در پایتون را انجام دهید. این کار شاید در نظر اول بسیار سخت و مشکل به نظر برسد!اگر این داده‌ها را به‌وسیله‌ی یک کاراکتر خاص از هم جدا کرده باشیم، کارمان بسیار ساده است. فقط کافی است متد ()splitرا روی رشته صدا بزنیم…فرض کنید نمرات یک دانشجو را در قالب یک رشته و به صورت زیر در اختیار داریم.

 

"grades_str = "18,17.5,20,14,16

 

متد ()splitیک ورودی می‌گیرد که به نام جداکننده (delimeter) شناخته می‌شود. جداکننده همان کاراکتر یا رشته‌ای است که داده‌های ما را از یکدیگر تفکیک کرده است. در رشته‌ی ما، ویرگول (یا ,) جداکننده نمرات خواهد بود.

 

"grades_str = "18,17.5,20,14,16

(',')grades_list = grades_str.split 

print( grades_list )

 

خروجی این قطعه کد، یک لیست شامل تمام نمرات خواهد بود.

['18', '17.5', '20', '14', '16']

جداکننده می‌تواند هر چیزی باشد، یک حرف انگلیسی، یک علامت، یک عدد یا حتی یک رشته‌ی دیگر! مثلاً در قطعه کد زیر رشته‌ی مورد نظر را با رشته "step" جدا شده است.

"string = "step 1: hello step 2: world step 3: run step 4: pythonprint( string.split("step") ) ['', ' 1: hello ', ' 2: world ', ' 3: run ', ' 4: python'] #

 

دلیل ایجاد شدن یک رشته‌ی خالی در ابتدای لیست این است که کلمه‌ی جداکننده در ابتدای رشته قرار گرفته است.

 

جستجو در رشته در پایتون

گاهی می‌خواهیم یک کاراکتر، کلمه یا رشته را درون رشته‌ای دیگر جستجو کنیم. برای جستجو در رشته از متد ()findاستفاده می‌کنیم.این تابع سه ورودی می‌گیرد که اولی اجباری و دو مورد دیگر اختیاری است.

ورودی اول، کاراکتر یا رشته‌ی مورد جستجوی ماست. ورودی دوم، اندیس شروع عملیات جستجو را مشخص می‌کند. ورودی سوم هم اندیس پایان قسمت جستجو را مشخص می‌کند.

خروجی این تابع یک عدد است. اگر کاراکتر تعریف شده در رشته وجود داشت، اندیس اولین اتفاق (اولین جایی که کاراکتر در رشته دیده شده) به ما بازگردانده می‌شود. در غیر این صورت عدد -1 را به عنوان خروجی خواهیم داشت.

"!string = "Hello and Welcome to KabirApp WebSiteprint( string.find("e") )    # 1
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استفاده کردیم.
به نظر شما چه تابع دیگری در کار با رشته‌های پایتون پرکاربرد است که ما معرفی نکرده‌ایم ؟ لطفاً آن را از قسمت دیدگاه‌ها با همه به اشتراک بگذارید.

0 نظر


لطفا وارد شوید و نظر خود را ثبت نمایید.

بهترین ها

  نام تعداد آزمون میزان موفقیت
Photo َAmeneh Darvishzadeh 1 100/00 %
Photo Mehrad Hashemi 1 100/00 %
Photo Noushmehr Norsobhi 1 100/00 %
Photo محمدحسین میرزایی 1 100/00 %
Photo مهدی حسین پور آقائی 1 100/00 %
Photo Farnoush Toghiany 21 98/36 %
Photo zahra namdari 46 98/21 %
Photo یاسمن محمدی پور 4 98/08 %
Photo Tara Mohammadi 3 96/43 %
Photo yasaman mohamadipur 51 95/86 %
Photo مهدی هنرمند 1 95/24 %
Photo محمدجواد ملائی اردستانی 3 94/44 %
Photo Arzhang Saberi 4 93/33 %
Photo Soheila Karimi 124 92/73 %
Photo aram farhmand 10 92/31 %
Photo یاشار اسکندری 98 91/14 %
Photo عباس پورمیدانی 1 90/00 %
Photo پریسا سلوکی شهرضایی 72 89/49 %
Photo ارشیا قلمکاری 33 89/23 %
Photo Matin Azimipour 30 88/17 %