۲۲ ترفند پایتون برای کار با رشته ها – راهنمای کاربردی


دستکاری رشتهها کاری است که برنامهنویسان پایتون به وفور انجام میدهند. در این نوشته با 22 ترفند پایتون برای کار با رشته ها آشنا خواهیم شد. در همه این مثالها از پایتون نسخه 3 استفاده شده است. در زمان نگارش این نوشته جدیدترین نسخه پایتون، نسخه 3.8.2 بوده است.
یافتن یک عبارت درون یک رشته
با استفاده از مقایسهگر داخلی پایتون به نام in میتوانیم بفهمیم که آیا یک عبارت درون یک رشته وجود دارد یا نه.
این عملگر مقدار true یا false بازگشت میدهد.
معکوس ساختن یک رشته
با تعیین یک گام کاهشی برای عملگر slice میتوانیم یک رشته را معکوس کنیم. در تمام مثالهای زیر از متد STR در پایتون استفاده کردهایم.
بررسی برابر بودن دو رشته
بررسی برابر بودن با استفاده از عملگر == موجب میشود که متوجه شویم دو شیء مقدار یکسانی دارند یا نه. برای مقایسه هویت از عملگر is استفاده میکنیم تا متوجه شویم آیا دو شیء یکی و یکسان هستند یا نه.
حالتهای مختلف کوچکی/بزرگی حروف در رشتهها
پایتون برخی تابعهای داخلی دارد که میتوان از آنها برای تغییر حالت حروف یک رشته استفاده کرد.
الحاق کارآمد رشتهها در هم
استفاده از join روی یک رشته خالی موجب الحاق پارامترها میشود.
این تابع تعداد متغیری از آرگومانها را با استفاده از نشانگر * دریافت میکند.
بررسی خالی بودن رشته
یک شیء string کاملاً معمولی میتواند شامل 0 کاراکتر باشد یا همه کاراکترهای آن فضای خالی باشند و یا حتی یک شیء از نوع None باشد. این تابع میتواند برای تست این مسئله استفاده شود که آیا رشته شامل محتوای کاراکتری یا بایتی است.
حذف فضاهای خالی ابتدا و انتهای رشته
تابع زیر یک سهتایی بازگشت میدهد که هر عنصر شامل یک نسخه از string اصلی است اما در هر کدام از آنها فضاهای خالی رشته به ترتیبی جدا شدهاند. در خط 6 میبینیم که پایتون گزارههایی که مقدار را به متغیرهای چندگانه نسبت میدهند درک کرده است.
تولید یک رشته از کاراکترهای تصادفی
امکان استفاده از ماژول secrets برای تولید گزینههای تصادفی از کاراکترها و افزودن آنها به یک رشته وجود دارد.
خواندن خطوط یک فایل به یک لیست
در کد زیر شیء فایلخوان f به طور صریح به یک لیست تبدیل شده است. توجه کنید که ما فایل را در حالت ‘r’ برای read-only بودن باز نکردهایم.
توکندار کردن کامل یک جمله
توکندار کردن یک رویه در پردازش زبان طبیعی است که در طی آن همه توکنها در یک جمله مانند علائم سجاوندی بازگشت مییابند. در کد زیر از NLTK استفاده کردهایم که باید به صورت مجزا نصب شود.
اجرای کد پایتون موجود درون یک رشته
در این بخش دو روش برای اجرای یک کد که درون رشته قرار دارد نمایش یافته است. متد exec_string یکی دیگر از متدهای رشته در پایتون است. این متد، محتوای یک رشته پایتونی را به سیستم عامل ارسال میکند. متد eval_string از پایتون برای ارزیابی رشته استفاده میکند. در مورد کار کردن با هر دو متد هوشیار باشید، زیرا ممکن است رشتههایی که اجرا میکنید، شامل بدافزار باشند.
یافتن عبارت بین دو علامت
به این منظور از «عبارتهای منظم» (regular expressions) و F-String-ها استفاده کردهایم.
حذف همه علائم سجاوندی از یک رشته
این ماژول رشته شامل لیستی از کاراکترهای سجاوندی است. با استفاده از translate (نکته شماره 21 را ببینید) میتوانیم آنها را از رشته حذف کنیم.
انکود و دیکد کردن URL-های UTF-8
UTF-8 به ما امکان میدهد که از کاراکترهای بسطیافته و دابل-ورد مانند ایموجیها استفاده کنیم.
این کاراکترها پیش از آن که در یک URL استفاده شوند، باید انکود شوند.
استفاده از انکودینگ Base64 روی رشتهها
Base64 یک متد برای انکود کردن دادههای دودویی به صورت یک رشته و انتقال در پیامهای متنی است. از آن میتوان برای انکود کردن رشتههای UTF-8 نیز استفاده کرد.
محاسبه مشابهت بین دو رشته
برای محاسبه مشابهت بین دو رشته، جدا از استفاده از «مسافت لوناشتاین» (Levenshtein distance) در nltk.edit_distance میتوان از کتابخانه difflib نیز استفاده کرد. مقدار 1.0 به معنی برابری دقیق است.
حذف یک کاراکتر از یک اندیس خاص
بک بار دیگر باید اشاره کنیم که رشتهها دنبالهای از کاراکترها هستند و از این رو میتوانیم از عملیات slice روی آنها استفاده کنیم. همینطور که میبینید در کد زیر از تابع Index در پایتون استفاده شده است.
تبدیل CSV به لیست و برعکس
مقادیر جدا شده با کاما (CSV) رواج زیادی دارند، زیرا اکسل آنها را به شیوه خوبی مدیریت میکند و راهکاری عمومی برای حل مسائل دادهای محسوب میشوند. در کد زیر یک خط منفرد CSV را دریافت کرده و آن را به یک لیست از مقادیر تبدیل میکنیم.
خط 3 کد فوق یک لیست تولید میکند و خط ورودی را هر بار که با جداکننده (,) مواجه شود میشکند. اکنون عکس این کار را اجرا میکنیم و یک لیست را به خط CSV تبدیل میکنیم.
الحاق یک در میان کاراکترهای دو رشته
با استفاده از متد zip_longest از ماژول itertools میتوانیم دو رشته با طولهای نابرابر را به صورت کاراکترهای یک در میان از هر یک از رشتهها در هم الحاق کنیم. این راهحل در خروجی یک «خلاصه لیست» (list comprehension) ارائه میکند که رشته I + j را در هم ادغام کرده است.
حذف کاراکترهای ناخواسته از یک رشته
به این منظور از متد Replace در پایتون استفاده میکنیم. به خاطر داشته باشید که امکان تغییر مقدار یک رشته به صورت درجا وجود ندارد، چون رشتهها «تغییرناپذیر» (immutable) هستند. نکته شماره 21 را نیز ببینید:
یافتن اندیس موقعیت یک کاراکتر در رشته
در این راهکار از یک «خلاصه لیست» (list comprehension) به همراه یک فیلتر با استفاده از if بهره میگیریم.
ترجمه رشته به کاراکترهای جایگزین
با استفاده از تابعهای maketrans و translate میتوانیم یک رشته را به حالت بهرهگیری از کاراکترهای جایگزین تبدیل کنیم.
روشهای مختلفی نیز برای تبدیل رشته به عدد در پایتون و رشته به لیست وجود دارد.
به این ترتیب به پایان این مقاله با عنوان 22 ترفند پایتون برای کار با رشتهها میرسیم.