مقاله قبلی: ساختار داده ای رشته در زبان برنامه نویسی پایتون
در مقاله قبلی با لیترال های رشته ای، کاراکترهای گریز پایتون و ایجاد رشته های خام در پایتون آشنا شدید.
در این مقاله قصد داریم به شرح عملیاتی که می توان بر روی رشته ها انجام داد بپردازیم.
از عملگر + می توان علاوه بر جمع کردن اعداد با یکدیگر ، برای الحاق و چسباندن رشته ها نیز استفاده کرد. مثلا در قطعه کد زیر می بینید که عملگر + ، نام و نام خانوادگی دریافتی از سوی کاربر را با یکدیگر ترکیب کرده و چاپ می کند.
البته توجه داشته باشید که شما نمی توانید از مخلوطی از اعداد و رشته ها را به عنوان عملوندهای یک عملگر تعریف کنید. چرا که این کار به بروز خطای نوع (TypeError) منجر می شود.
عمگر * نیز یک رشته را به تعداد دفعات مشخص شده تکرار می کند.
در قطعه کد زیر می توانید تعدادی از عملیاتی که می توان بر روی رشته ها انجام را به صورت یک جا مشاهده کنید.
کارکرد عملگر | عملگر های رشته ها |
الحاق رشته ها با هم | + |
تکرار یک رشته به تعداد معین | * |
دسترسی به کاراکتری از رشته | [] |
استخراج بخش هایی از رشته | [:] |
تست عضویت کاراکتری در یک رشته | in |
تست عدم عضویت کاراکتری در یک رشته | not |
خنثی کردن عملکر کاراکتر گریز | r/R |
قالب بندی یک رشته | % |
بررسی وجود یا عدم وجود یک زیر رشته
توسط دو کلمه کلیدی in و not in می توان به ترتیب وجود یا عدم وجود یک زیر رشته را در یک رشته مورد بررسی قرار داد. نتیجه اعمال این دو عملگر بر روی رشته ها، مقدار بولین True است یا False .
دسترسی به عناصر یک رشته
مشابه لیست های پایتون، با استفاده از یک براکت چهار گوش [] و اندیس عنصر مورد نظر، می توان به تک تک عناصر یک رشته دسترسی پیدا کرد. در این ساختمان داده هم اندیس ها از عدد صفر شروع می شوند. مثلا قطعه کد زیر، هفتمین عنصر آرایه a را چاپ می کند. توجه داشته باشید که فضای خالی بین کلمات هم خود یک کاراکتر محسوب می شود.
تلاش برای دسترسی به کاراکتری از رشته که اندیس آن خارج از رنج اندیس های آن رشته است منجر به خطای IndexError می شود. همچنین این اندیس حتما باید عدد صحیح باشد و انتخاب اندیس از نوع اعشاری یا سایر انواع داده باعث بروز خطای TypeError می شود.
با استفاده از عملگر برش (کولن :) نیز می توانید قسمت هایی از یک رشته را استخراج کنید. این عملگر دو عدد را به عنوان اندیس شروع و پایان دریافت کرده و کاراکترهای موجود در آن رنج یا محدوده را استخراج می کند. توجه داشته باشید که در این حالت، خود کاراکتر قرار گرفته در مکان اندیس دوم استخراج نمی شود. مثلا در قطعه کد زیر، کاراکترهای مربوط به اندیس 7 تا 11 چاپ می شوند.
- اگر در داخل این عملگر، اندیس دوم را ننویسید کاراکترهای رشته را از اندیس اول به بعد چاپ می کند مثلا با نوشتن دستور email[5:] با شروع از اندیس پنجم، تمامی کاراکترهای رشته استخراج می شوند. حال اگر تنها اندیس دوم را بنویسید از اندیس 0 تا اندیس دوم، کاراکترهای رشته مورد نظر چاپ می شوند (email[:4]).
- اندیس دریافتی توسط این عملگر می تواند منفی هم باشد. در این صورت استخراج کاراکترها از انتهای رشته آغاز خواهد شد. مثلا در قطعه کد زیر می بینید که با اجرای دستور email[-1] آخرین کاراکتر این رشته استخراج می شود و یا با نوشتن دستور email[:-2] غیر از دوکاراکتر انتهای رشته، تمامی کاراکترهای متغیر email چاپ می شوند.
پیمایش عناصر یک رشته توسط حلقه for
شما می توانید توسط حلقه های تکرار مخصوصا حلقه for ، کاراکترهای یک رشته را از ابتدا به انتها پیمایش کرده و عملیات موردنظرتان را روی آنها انجام دهید. مثلا در قطعه کد زیر، ما تعداد حروف L موجود در رشته HELLO WORLD را توسط یک حلقه for بدست آورده ایم.
تغییر عناصر یک رشته
رشته ها ساختارهای داده ای تغییرناپذیرند. به این معنا که پس از مقداردهی یک رشته نمی توانید کاراکترهای آن را با عملگر انتساب تغییر دهید. تنها کاری که برای تغییر عناصر یک رشته می توانید انجام دهید این است که رشته متفاوتی را به نام همان متغیر رشته ای منتسب کنید.
حذف یک رشته یا عناصر آن
در پایتون امکان حذف کاراکترهای یک رشته هم وجود ندارد (با خطای TypeError: ‘str’ object doesn’t support item deletion مواجه می شوید). این خطا به شما می گوید که شی رشته در پایتون از امکان حذف آیتم پشتیبانی نمی کند. بلکه تنها می توانید توسط کلمه کلیدی del کل رشته را حذف کنید.
فرمت دهی رشته ها در پایتون
زبان پایتون برای فرمت دهی رشته ها از همان روش زبان c استفاده می کند، مثلا در پایتون برای فرمت دهی یک رشته از عملگر “%s” ، برای فرمت دهی یک عدد از عملگر “%d”، برای فرمت دهی اعداد اعشاری از عملگر “%f” و برای فرمت دهی اعداد در نمایش هگزادسیمال از عملگرهای %x یا%X استفاده می شود. فرض کنید نام فردی را در یک متغیر ذخیره کرده اید و می خواهید با ذکر نامش با او احوالپرسی کنید.
اگر قرار است بیش از یک متغیر را فرمت دهی کنید بهتر است آنها را در درون یک تاپل قرار داده و عملگر “%” را بر روی این علامت پرانتز این تاپل اعمال کنید. بنابراین از عملگر % خالی می توان برای فرمت دهی مجموعه ای از متغیرهای محصور در یک تاپل (لیست تغییرناپذیر) نیز استفاده کرد.
علاوه بر موارد بالا از عملگر “%s می توان برای فرمت دهی شیئی که یک رشته نیست نیز استفاده نمود.
معرفی توابع درون ساخته پایتون برای کار بر روی رشته ها
در پایتون توابع درون ساخته ای (build-in) وجود دارند که توسط آنها می توان کارهای مختلفی روی رشته ها انجام داد. لذا ما در این مقاله قصد داریم به تشریح چند نمونه از مهم ترین توابع موجود بپردازیم. خود شما هم می توانید با نوشتن علامت نقطه پس از نام رشته موردنظرتان و فشردن همزمان کلیدهای ctrl و space، تمامی این توابع را مشاهده کنید. حال می توانید با کلیدهای جهتی بالا و پایین کیبورد، در منوی کشویی موجود، حرکت کرده و توسط کلید tab، تابع مورد نظرتان را انتخاب کنید.
تابع format()
روش دیگر فرمت دهی یک رشته استفاده از تابع format می باشد. این تابع یکی از توابعی است که توسط شی رشته قابل دسترس است. در این شیوه، رشته ای که قرار آن را فرمت دهی کنید حاوی یک یا بیش از یک علامت براکت مجعد است به طوریکه این براکت ها همانند یک نگه دارنده عمل می کنند و با مقادیری که به عنوان آرگومان های تابع format مشخص شده اند پر می شوند. حال برای مشخص کردن ترتیب جایگزین شدن آرگومانهای این تابع با براکت های مجعد درون رشته، می توان از اندیس های عددی و یا نام متغیرهای درون این تابع استفاده کرد. البته در صورتی که از هیچ کدام از این روش ها برای مشخص کردن ترتیب جایگزینی استفاده نکنید پایتون با ترتیب پیش فرض خود این عمل را انجام می دهد. مثلا در قطعه کد زیر، به ترتیب از روش پیش فرض، اندیس های عددی و نام متغیرها برای مشخص کردن ترتیب جایگزینی مقادیر در درون براکت های مجعد استفاده شده است.
تابع count : توسط این تابع می توان فهمید که یک زیر رشته در بازه ای که ما تعیین می کنیم چند بار تکرار شده است. این تابع سه ورودی دارد که عبارتند از زیر رشته مورد نظر، اندیس شروع و اندیس پایان. مثلا در قطعه کد زیر می بینید که بین اولین و آخرین اندیس رشته str، 4 بار زیر رشته “am” تکرار شده است.
تابع :Find این تابع نیز بسیار شبیه تابع count است با این تفاوت که این تابع، به جای برگرداندن تعداد تکرار یک زیر رشته در رشته مورد نظر، وجود یا عدم وجود آن را گزارش می دهد. به عبارت دیگر، اگر زیر رشته را پیدا کند اندیس شروع آن را بر می گرداند و اگر پیدا نکند هم عدد -1 را بر می گرداند. مثلا در قطعه کد زیر، به دلیل یافتن زیررشته “am”، اندیس شروع آن را که 2 است بر می گرداند اما در دستور دوم، چون زیر رشته “kamal” را پیدا نمی کند لذا عدد -1 را بر می گرداند.
تابع index : این تابع هم درحقیقت همان کار تابع find را انجام می دهد با این تفاوت که نبود زیر رشته مورد نظر را با نشان دادن یک خطا گزارش می دهد.
تابع strip() : با استفاده از این تابع می توانید فضاهای خالی موجود در ابتدای یک رشته را حذف کنید.
تابع len() نیز طول (تعداد کاراکترهای) یک رشته را برمیگرداند. همانطور که در مثال زیر می بینید با اینکه دو رشته a و b عین هم هستند اما طول یکسانی ندارند. این موضوع نشان میدهد که در شمارش تعداد کاراکترهای یک رشته، فضای خالی هم یک کاراکتر محسوب می شود.
تابع upper() تمامی کاراکترهای یک رشته را با حروف بزرگ نمایش می دهد. تابع lower() نیز برعکس تابع upper() عمل کرده و تمامی کاراکترهای یک رشته را با حروف کوچک نمایش می دهد.
تابع replace() : این تابع، یک رشته جدید را با رشته قدیمی جایگزین می کند و دارای سه آرگومان ورودی است اما با توجه به اختیاری بودن آرگومان سوم (تعداد دفعات جایگزین کردن) می توان آن را به دو شکل زیر نوشت.
مثلا در کد زیر، با اینکه تابع replace به صورت ضمنی 4 بار وجود زیررشته “am” را در رشته str، کشف نموده است اما تنها سه مورد اول را با زیر رشته “–“، جایگزین می کند.
تابع split() : این تابع با یافتن جداکننده ای که به عنوان پارامتر می گیرد رشته را به دو زیر رشته می شکند.
تابع capitalize: این تابع فقط حرف اول رشته را به حروف بزرگ تبدیل می کند و مابقی حروف به صورت کوچک نوشته می شوند.
min() و max() : این توابع نیز به ترتیب کوچک ترین و بزرگ ترین کاراکتر موجود در یک رشته را به ترتیب حروف الفبا بر می گردانند.
تابع Join() : عناصر موجود در یک رشته را به وسیله جداکننده تعیین شده به همدیگر پیوند می دهد(متصل می کند). اگر آرگومان ورودی این تابع حتی دارای یک کاراکتر غیررشته ای هم باشد خطای TypeError را دریافت خواهید کرد.
تابع isnumeric() : اگر تمامی کاراکترهای موجود در یک رشته، عدد باشند این تابع مقدار true و در غیر این صورت (حتی اگر یک کاراکتر غیر عددی در رشته وجود داشته باشد) مقدار false را بر می گرداند.
تابع enumerate() : این تابع شیئی را بر می گرداند که دربردارنده زوج مرتب هایی به صورت (مقدار آن آیتم , اندیس هر ایتم) می باشد. به مثال زیر توجه کنید تا با نحوه عملکرد این تابع آشنا شوید:
در این مقاله به شرح عملیاتی بر روی رشته ها پرداخته شد که شامل این عناوین است: بررسی وجود یا عدم وجود یک زیر رشته، دسترسی به عناصر یک رشته، پیمایش عناصر یک رشته توسط حلقه for، تغییر عناصر یک رشته، حذف یک رشته یا عناصر آن، معرفی توابع درون ساخته پایتون برای کار بر روی رشته ها. امیدواریم مورد پسند و بهره شما قرار گرفته باشد.
مقاله بعدی: معرفی list و طرز ایجاد آن در پایتون
ترجمه: رقیه آقایاری