فهرست بستن

رشته ها و متن ها

در این آموزش، تعدادی متغیر با رشته های پیچیده میسازیم تا آنها را بهتر بفهمیم.

یک رشته معمولا متنی است که میخواهید به کسی نشان بدهید یا به خارج از برنامه ای که مینویسید بفرستید. وقتی شما اطراف متن را با علامت های نقل قول تکی یا دوتایی میگذارید، پایتون شناسایی میکند که متن شما از نوع رشته است. شما بارها با این موضوع مواجه شده اید که هنگان استفاده از تابع print برای وارد کردن متن از ‘ یا ” برای تبدیل رشته کردن از آن استفاده میکنید و سپس پایتون آن را چاپ میکند.

در کل رشته ها در پایتون جزء محبوبترین نوع از انواع داده های پایتون محسوب میشوند.(البته در بسیاری از زبان ها، رشته یکی از محوری ترین داده ها محسوب میشود.)

نمونه هایی از رشته ها:

Capture

نقل قول سه تایی (نوشتن متن چند خطی)

برای ایجاد متن یا رشته چند خطی باید از نشان نقل قول سه تایی بهره ببریم(“””).

مثال:

Capture

که وقتی چاپ شود.

Capture

رشته های خام

برای ایجاد رشته های خام که کاراکتر های خاص اعمال نشود از حرف (r) پیش از رشته استفاده میکنیم.

رشته ای که خام نیست: Capture

کاوش در متن

برای کاوش در متن(رشته) کافیست متغیری که حاوی متن بوده را با استفاده از علامت های [] شروع به انتخاب ایندکس های موجود در رشته نمایید.

برای مثال:

Capture

خروجی کد بالا در زیر قرار داده شده است:

Capture

استفاده از رشته های unicode

رشته های معمولی در پایتون به صورت ASCII و هشت بیتی ذخیره میشوند، در صورتی که رشته های یونیکد به صورت Unicode و ۱۶ بیتی ذخیره میگردند.

یونیکد ها در اصل به شما اجازه میدهند تا بتوانید کاراکتر های بیشتری را در متون خود استفاده کنید، کاراکتر هایی که در حالت معمول نمیتوانید، مثلا برای ایجاد رشته های فارسی یا بیشتر زبان ها باید از یونیکد استفاده کنید.

Capture

همانطور که در بالا میبینید با پسوند (u) آن متن را یونیکد کرده ایم.

عملگر ها بر روی رشته ها

در این بخش با یک جدول٪ عملگر ها در رشته ها را شرح میدهیم.

فرض کنید متغیر a رشته “Hello” را در بر میگیرد و متغیر b رشته “Python” را نگهمیدارد.

Capture

کاراکتر های فرمت

_ رشته ها همان طور که می دانستید شاید حاوی کاراکتر های فرمت شده باشند. شما به راحتی کاراکتر فرمت شده را داخل رشته قرار می دهید ، و بعد یک کاراکتر * (درصد) ، و یک متغيير بعد از آن قرار میدهید . تنها تفاوت موقعی هست که میخواهید از چند فرمت داخلی رشته خود برای چاپ چند متغیر استفاده کنید ، شما باید آن ها را داخل () (پرانتر) قرار داده و با. (ویرگول) جدایشان کنید. مثل این است که شما از من درخواست کنید در راه خود به خانه لیستی از اجناس را از فروشگاه بخرم و شما می گویید ، شیر ، تخم مرغ ، نان ، و سوپ ” میخواهم . فقط به عنوان یک برنامه نویس میگوییم ، ” (شیر ، تخم مرغ ، نان ، سوپ)”

بطور ساده تر اگر بخواهیم متنی داینامیک داشته باشیم که مثلا همه قسمت رشته ثابت هست و قرار است بعضی از قسمتها تغيير کنند از فرمتها در رشته استفاده میکنیم.

همچنین فرمتها برای آرایش بهتر متن ما بکار گرفته می شوند.

حال تعداد زیادی رشته ، متغيير ، و فرمت ها ، را تایپ و چاپ می کنیم . شما حتی طریقه استفاده از نام های کوتاه شده ی متغییر ها را نیز تمرین می کنید . برنامه نویسان استفاده از زمان به نفع خود را دوست دارند و به این دلیل از نام هایی برای متغییر خود استفاده می کنند که برای افراد آماتور آزار دهنده است استفاده می کنند ، پس بیایید یاد بگیریم چطور این طریق نام ها را بخوانیم و بنویسیم .

Capture

چیزی که باید ببینید:

Capture

نمونه ای دیگر: Capture

که خروجی زیر را در بر خواهد داشت:

Capture

در زیر لیست کاملی از نشانه ها(symbol) قابل استفاده را لیست کرده ایم.

Capture برای نمونه بر فرض مثال ما از متغیر استفاده میکنیم که زمان را بر حسب ثانیه به این شکل نمایش میدهد:

time = 23.34563972

و حال قصد داریماین زمان را تا دو رقم اعشار بیشتر نشان ندهد!

برای اینکار به روش زیر عمل میکنیم: Capture

که نتیجه برابر زیر خواهد بود: Capture

نوعی دیگر از فرمت استفاده از متد format() میباشد.

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

متد format() به اینگونه عمل میکند که متغیر های مورد نظر با جفت آکولاد های ({}) قرار داده شده در متن جابه جا میکند که این {}ها میتوانند به ترتیب اولویت داده شوند که کافیست داخل آنها شماره گذاری شود.

به مثال های زیر که در کنسول پایتون همراه با جواب آن میباشد دقت نمایید:

Capture

همچنین شما میتوانید از خواص (attribute) آن آرگومانها در متن نیز بهره ببرید:

Capture

شما میتوانید از آیتمهای داخل آرگومانها نیز استفاده کنید:

Capture

جا به جایی با %s و %r: Capture

استفاده از فرمت های اعشاری در متن:

Capture

اضافه کردن واحد های پولی و هزارگان، هزارگان جدا کردن و کنترل نمایش واحد پول (currency): Capture

نمایش به صورت درصدی و محدودیت ارقام اعشاری:

Capture

استفاده از تاریخ و گونه های خاص:

Capture

یک مثال پیچیده:

Capture

متد های جاسازی شده در ساختار پایتون برای کار با رشته ها

برای کار با رشته ها پایتون ابزار های بسیاری در اختیار شما قرار داده است که یکسری از این تجهیزات را پیشتر بیان کردیم، حال به متد های کارآمد میپردازیم.

  • ۱- متد capitalize() :

این متد رشته شما را گرفته و اولین حرف از رشته را بزرگ کرده و آن را در قالب ۸ بیتی بسته به نوع رشته شما برمیگرداند:

Capture

خروجی بالا به شکل زیر میباشد:

Capture

  • ۲- متد center() :

این متد به اندازه مقداری که به عنوان اولین پارامتری که پاس میدهید متن را از هر دو طرف به اندازه تعداد آن مقدار کاراکتر یا حرفی که به عنوان پارامتر دوم تعیین میکنید، در وسط قرار میدهد.

به عنوان مثال:

Capture

توجه: حتما پارامتر دوم باید از نوع char باشد نه استرینگ:

مثل: Capture

کد بالا درست است:

Capture

اما در کد بالا همانطور که مشاهده میکنید دارای خطا گونه نوع داده میباشد!

  • ۳- متد count() : این متد تعداد رشته یا تعداد حروف مورد نظر ما را در کل رشته شمارش میکند: Capture

که مقدار ۲ را برمیگرداند.

  • ۴- متد endswith() :

این متد در صورت پیدا کردن کلیدواژه ما در انتهای رشته مقدار True را برمیگرداند. در غیر این صورت مقدار False را برمیگرداند.

Capture

در صورت اجرا کردن کد بالا نتیجه زیر نمایان میشود: Capture

  • ۵- متد find() : این متد موقعیت ایندکس رشته مورد جستجوی شما را در رشته اصلی پیدا کرده و برمیگرداند.

این متد سایر بیشتر متد ها دوپارامتر شروع و پایان دارد و در صورت وارد نکردن پارامتر شروع، به صورت ویشفرض ایندکس را از صفر یعنی از ابتدای جمله شروع میکند.

Capture

خروجی بالا نتیجه زیر را نمایش میدهد:

Capture

  • ۶- متد isalpha() :

این متد مقدار True را زمانی که تمامی رشته از حروف الفبای لاتین تشکیل داده باشد برمیگرداند. در غیر این صورت(همراه با عدد و فاصله و کاراکتر های خاص) False برمیگرداند.

Capture

  • ۷- متد isdigit() این متد بر عکس متد بالا است و اگر رشته ای تماما عدد باشد مقدار True را برمیگرداند.
  • ۸- متد islower() : این متد زمانی که تمامی رشته ای از حروف کوچک تشکیل شده باشد مقدار True را برمیگرداند.

توجه: رشته حداقل باید دارای یک حرف کوچک باشد، اگر تمامی رشته عدد یا فضای خالی باشد مقدار False برمیگرداند.

  • ۹- متد isupper() :

این متد برعکس بالایی است. با این تفاوت که اگر تمامی حروف بزرگ باشند، مقدار True را خواهید دید.

  • ۱۰- متد join() : این متد رشته شما را با دنباله ایی از رشته هایی که وارد میکنید میچسباند: Capture
  • ۱۱- متد len() : این متد طول رشته شما را برمیگرداند:

Capture

خروجی بالا:

Capture

  • ۱۲- متدهای ljust() و rjust() :

این متدها همانند متد center() بوده و هرکدام به ترتیب برای چپ چین شدن و راست چین شدن به کار میروند.

Capture

  • ۱۳- متد lower() :

این متد برای کوچک کردن متون لاتین بکار میرود:

Capture

  • ۱۴- متد upper() :

این متد همانند متد بالا میباشد، اما عملکردی برعکس دارد و همه متون را به بزرگ تبدیل میکند.

  • ۱۵- متد replace() :

برای جایگزین شدن با رشته یا رشته های دیگر بکار میرود:

Capture

نکته: در اینجا شاید فقط نیمی از متد ها آموزش داده شده است.(با ارزش ترین های آنان جدا شده و آموزش داده شده اند.)

توصیه های لازم

چون رشته ها در هر زبانی از اهمیت زیادی برخوردار است، به همین دلیل ما به شما توصیه میکنیم که تا میتوانید رشته ها را تمرین کنید.

در آخر فصل مثال های حرفه ای ما به شما درباره پردازش متن خواهیم گفت که تلفیق رجکس(regex)ها با کتابخانه قدرتمند re خواهد بود، که بسیار کاربرد قدرتمندی خواهد بود.

مثالی برای کار با متد ها در رشته ها:

لطفا برنامه زیر را تایپ کنید: