
سطح مقدماتی (Beginner Level)
رشتهها (Strings) در پایتون اشیایی تغییرناپذیر (Immutable) هستند، اما پایتون مجموعهای قدرتمند از متدها را ارائه میدهد که به ما اجازه میدهد نسخههای تغییر یافتهای از رشتهها را تولید کنیم. در این بخش با پرکاربردترین متدهای پردازش متن آشنا میشویم.
۱. تغییر وضعیت حروف (Case Conversion)
این متدها برای استانداردسازی متنها بسیار مفید هستند، مثلاً زمانی که میخواهید ورودی کاربر را بدون توجه به کوچک یا بزرگ بودن حروف پردازش کنید.
upper(): تمام حروف را بزرگ میکند.lower(): تمام حروف را کوچک میکند.title(): حرف اول هر کلمه را بزرگ میکند.capitalize(): فقط حرف اول کل رشته را بزرگ میکند.
مثال ۱: تبدیلهای ساده (قابل اجرا)
مثال ۲: استفاده در مقایسه (Snippet) در این مثال فقط منطق نشان داده شده است و کد به تنهایی خروجی ندارد.
# Static usage in logic
user_input = "Admin"
if user_input.lower() == "admin":
access_granted = True
مثال ۳: اصلاح فرمت جملات (قابل اجرا)
۲. جستجو در رشتهها (Finding Substrings)
برای پیدا کردن موقعیت یک زیررشته (Substring) یا شمارش تعداد تکرار آن از این متدها استفاده میشود.
find(): اندیس اولین تکرار را برمیگرداند (اگر پیدا نشود-1میدهد).index(): مشابهfindاست اما اگر پیدا نکند خطا (Error) میدهد.count(): تعداد تکرار یک زیررشته را میشمارد.
مثال ۱: پیدا کردن موقعیت کلمات
مثال ۲: شمارش تکرارها
۳. تمیزکاری و حذف فاصلهها (Stripping)
بسیار کاربردی برای پاکسازی ورودیهای کاربر که ممکن است دارای فاصلههای اضافی (Whitespace) باشند.
strip(): حذف فاصله از ابتدا و انتها.lstrip(): حذف فاصله فقط از چپ (ابتدا).rstrip(): حذف فاصله فقط از راست (انتها).
مثال ۱: پاکسازی ورودی
مثال ۲: حذف کاراکترهای خاص میتوانید به جای فاصله، کاراکتر خاصی را برای حذف دادن پاس دهید.
۴. جایگزینی و تقسیم (Replace & Split)
دو مورد از مهمترین متدها برای پردازش متن replace (جایگزینی) و split (تبدیل رشته به لیست) هستند.
مثال ۱: جایگزینی کلمات
مثال ۲: تبدیل رشته به لیست (Split)
مثال ۳: اتصال لیست به رشته (Join)
متد join برعکس split عمل میکند.
سطح پیشرفته (Professional Level)
در سطح حرفهای، ما با اعتبارسنجی محتوا، فرمتدهی دقیق، انکودینگ و جداول ترجمه (Translation Tables) سروکار داریم. این متدها برای ساخت ابزارهای پردازش متن قدرتمند ضروری هستند.
۱. اعتبارسنجی محتوا (Is-Checks)
این متدها خروجی True یا False برمیگردانند و برای بررسی نوع محتوای رشته استفاده میشوند.
isdigit(): آیا تمام کاراکترها عدد هستند؟isalpha(): آیا تمام کاراکترها حروف الفبا هستند؟isalnum(): آیا ترکیب عدد و حروف است؟ (بدون علامت خاص).isspace(): آیا فقط شامل فاصله و فضای خالی است؟
مثال ۱: بررسی ورودی عددی (قابل اجرا)
مثال ۲: منطق بررسی نام کاربری (Static)
def validate_username(username):
# Username needs to be alphanumeric (no symbols like @ or #)
if username.isalnum():
return True
return False
۲. بررسی پیشوند و پسوند (Prefix & Suffix)
متدهای startswith و endswith بسیار سریعتر و خواناتر از برش رشته (Slicing) هستند. نکته حرفهای این است که این متدها میتوانند یک Tuple از گزینهها را دریافت کنند.
مثال ۱: بررسی پسوند فایل (Tuple support) این تکنیک در نوشتن اسکریپتهای مدیریت فایل بسیار مهم است.
مثال ۲: فیلتر کردن خطوط لاگ
۳. جداول ترجمه (Translation Tables)
برای جایگزینی چندین کاراکتر مختلف به صورت همزمان، استفاده از replaceهای متوالی کند و غیرحرفهای است. در عوض از maketrans و translate استفاده میکنیم. این روش پرفورمنس بسیار بالایی دارد.
مثال ۱: حذف کاراکترهای مزاحم فرض کنید میخواهیم حروف صدادار را با اعداد جایگزین کنیم (استایل leet code).
مثال ۲: حذف علائم نگارشی (پیشرفته)
۴. تراز کردن متن (Justification & Zfill)
در تولید گزارشهای متنی در کنسول یا لاگها، تراز کردن متن اهمیت دارد.
ljust(width): تراز چپ.rjust(width): تراز راست.center(width): وسط چین.zfill(width): پر کردن سمت چپ با صفر (مخصوص اعداد در فرمت رشته).
مثال ۱: ساخت جدول متنی ساده
مثال ۲: استانداردسازی شمارهها با zfill
۵. پارتیشنبندی (Partitioning)
تفاوت partition() با split() در این است که partition همیشه یک Tuple سه تایی برمیگرداند: (قبل از جداکننده، خود جداکننده، بعد از جداکننده). این برای پارس کردن رشتههایی که ساختار Key=Value دارند عالی است.
مثال ۱: جدا کردن تنظیمات
مثال ۲: هندل کردن نبود جداکننده اگر جداکننده پیدا نشود، کل رشته در بخش اول قرار میگیرد و دو بخش بعدی خالی میمانند.