📝 فصل ۱۶: کار با رشته‌ها و عبارات منظم (Strings & Regular Expressions)

""

۱۶.۱ چرا کار با رشته‌ها مهمه؟

تقریباً تو هر پروژه‌ای، با داده‌های متنی (رشته‌ای) سر و کار داریم: نام کاربر، ایمیل، متن پیام، خواندن فایل متنی، گرفتن داده از وب و…
پایتون ابزارهای قدرتمندی برای مدیریت و تغییر رشته‌ها (Strings) داره.


۱۶.۲ امکانات کلیدی رشته‌ها در پایتون

تعریف رشته:

name = "سلام پایتون"

یا:

multiline = """متن چند
خطی"""

الحاق (چسباندن)

first = "Hello"
second = "World"
result = first + " " + second  # "Hello World"

فرمت‌دهی رشته

فرمت سنتی:

name = "رضا"
age = 22
sentence = "نام من %s و سنم %d است" % (name, age)

فرمت جدیدتر و پیشنهادشده:

sentence = f"نام من {name} و سنم {age} است"

تعداد، جایگزینی و پیدا کردن:

txt = "python python PYTHON"
print(txt.lower().count("python"))        # چند بار اومده (کوچک و بزرگ فرقی نداره)
print(txt.replace("python", "java"))      # جایگزینی رشته
print("py" in txt)                        # آیا وجود داره؟
print(txt.startswith("py"))               # شروع شد؟
print(txt.endswith("ON"))                 # پایان یافت؟

برش (Slice)

mystr = "abcdef"
print(mystr[1:4])    # خروجی: 'bcd'
print(mystr[::-1])   # برعکس رشته

حذف فاصله اضافه:

s = "  Ali  "
print(s.strip())       # هم ابتدا و هم انتها رو حذف میکنه
print(s.lstrip())
print(s.rstrip())

۱۶.۳ Split و Join

برای تبدیل رشته به لیست و بالعکس:

names = "علی,مینا,سارا"
lst = names.split(",")       # ['علی', 'مینا', 'سارا']

txt = "_".join(lst)          # 'علی_مینا_سارا'

۱۶.۴ عبارات منظم (Regular Expressions)

ریجکس (Regex) چیه؟

عبارات منظم ابزاری هست برای جستجو، پیدا کردن یا استخراج الگوهای متنی خاص از رشته‌ها؛ مثلاً: ایمیل، شماره موبایل، کدملی، و…

ماژول re

برای کار با ریجکس، از ماژول re استفاده کن:

import re
pattern = r"\d+"   # یک یا چند رقم (0-9)
result = re.findall(pattern, "علی 12 ساله است و سال 1402 به مدرسه رفت")
print(result)  # ['12', '1402']

چند مثال کاربردی ریجکس

ایمیل:

txt = "لطفاً به info@gmail.com ایمیل بزنید."
pattern = r"[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+"
emails = re.findall(pattern, txt)
print(emails)    # ['info@gmail.com']

شماره موبایل (ایران):

txt = "شماره‌های من: 09123456789 و 09351234567"
pattern = r"09\d{9}"
mobiles = re.findall(pattern, txt)
print(mobiles)   # ['09123456789', '09351234567']

چک کردن کدملی:

code = "1234567890"
result = bool(re.match(r"\d{10}$", code))
print(result)    # True یا False

جایگزین کردن (replace با ریجکس)

همه اعداد را ستاره کن:

s = "کد: 879 و شماره: 456"
result = re.sub(r"\d+", "***", s)
print(result)  # کد: *** و شماره: ***

نکات حرفه‌ای

  • همیشه الگوها رو تست کن و مراقب اشتباهات باش.
  • با re.compile هم می‌تونی بارها از یک الگو استفاده کنی:
    python phone_pattern = re.compile(r"09\d{9}") print(phone_pattern.findall("09121234567, 09129876543"))
  • برای عبارات پیچیده‌تر از سایت regex101.com کمک بگیر (الگوی پایتون انتخاب کن).

🟩 تمرین عملی

۱. یک برنامه بنویس که ایمیل‌های موجود در یک متن رو شناسایی و چاپ کنه.
۲. یک برنامه که همه شماره‌های موبایل ایرانی رو از متن استخراج کنه.

محمد وب‌سایت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *