آموزش پایتون, پایتون مقدماتی

متدهای رشته در پایتون؛ upper، split، replace و متدهای کاربردی

متدهای رشته در پایتون؛ split، replace و strip

🗓 آخرین به‌روزرسانی:

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

این درس بخشی از دوره رایگان آموزش پایتون از صفر است. در ادامه پرکاربردترین متدهای رشته در پایتون را دسته‌بندی‌شده، با مثال اجرایی و خروجی، یاد می‌گیریم و در پایان یک تمرین واقعی پردازش متن انجام می‌دهیم.

متد رشته چیست و چطور صدا زده می‌شود؟

متد با نقطه بعد از رشته یا متغیر رشته‌ای نوشته می‌شود: text.method(). چون رشته‌ها تغییرناپذیرند، هیچ متدی رشته اصلی را تغییر نمی‌دهد؛ بلکه یک رشته جدید برمی‌گرداند. پس اگر نتیجه را لازم دارید، باید آن را در متغیری ذخیره کنید:

name = "python"
upper_name = name.upper()
print(name)        # python
print(upper_name)  # PYTHON

برای دیدن فهرست کامل متدهای رشته می‌توانید در محیط تعاملی پایتون دستور dir(str) یا help(str) را اجرا کنید.

۱. تغییر حروف بزرگ و کوچک

این متدها برای حروف انگلیسی کاربرد دارند و روی متن فارسی تأثیری ندارند:

text = "hello PYTHON world"
print(text.upper())       # HELLO PYTHON WORLD
print(text.lower())       # hello python world
print(text.title())       # Hello Python World
print(text.capitalize())  # Hello python world
print(text.swapcase())    # HELLO python WORLD
  • upper(): همه حروف را بزرگ می‌کند.
  • lower(): همه حروف را کوچک می‌کند؛ برای مقایسه ورودی کاربر بسیار مفید است.
  • title(): حرف اول هر کلمه را بزرگ می‌کند.
  • capitalize(): فقط حرف اول کل رشته را بزرگ می‌کند.
  • swapcase(): بزرگ و کوچک را جابه‌جا می‌کند.

یک کاربرد رایج: کاربر ممکن است «Yes»، «YES» یا «yes» تایپ کند. با lower() همه را یکسان می‌کنیم:

answer = "YES"
if answer.lower() == "yes":
    print("تأیید شد")

۲. حذف فاصله‌های اضافه با strip

ورودی کاربر معمولاً فاصله اضافه در ابتدا یا انتها دارد. متد strip() این فاصله‌ها را حذف می‌کند:

raw = "   ali@example.com   "
print("[" + raw.strip() + "]")    # [ali@example.com]
print("[" + raw.lstrip() + "]")   # [ali@example.com   ]
print("[" + raw.rstrip() + "]")   # [   ali@example.com]
print("---سلام---".strip("-"))     # سلام

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

۳. جستجو در رشته: find، index، count، startswith و endswith

text = "python is easy and python is fun"
print(text.find("python"))      # 0
print(text.find("python", 1))   # 19
print(text.find("java"))        # -1
print(text.count("python"))     # 2
print(text.startswith("py"))    # True
print(text.endswith("fun"))     # True
  • find(): ایندکس اولین رخداد را برمی‌گرداند و اگر پیدا نشود -1 می‌دهد.
  • index(): مثل find() است ولی اگر پیدا نشود خطای ValueError می‌دهد.
  • count(): تعداد تکرار یک عبارت را می‌شمارد.
  • startswith() و endswith(): شروع یا پایان رشته را بررسی می‌کنند؛ مثلاً برای تشخیص پسوند فایل.
filename = "report.pdf"
if filename.endswith(".pdf"):
    print("این یک فایل PDF است")

این روش در پروژه مرتب‌سازی خودکار فایل‌ها با پایتون هم استفاده شده است.

۴. جایگزینی متن با replace

متد replace(old, new) همه رخدادهای یک عبارت را با عبارت دیگری جایگزین می‌کند. پارامتر سوم اختیاری تعداد جایگزینی را محدود می‌کند:

text = "I like Java. Java is good."
print(text.replace("Java", "Python"))
# I like Python. Python is good.
print(text.replace("Java", "Python", 1))
# I like Python. Java is good.

phone = "0912-123-4567"
print(phone.replace("-", ""))   # 09121234567

۵. تقسیم و اتصال: split و join

متد split() رشته را بر اساس یک جداکننده به لیست تبدیل می‌کند. اگر جداکننده ندهید، بر اساس فاصله جدا می‌کند:

sentence = "python is a great language"
words = sentence.split()
print(words)        # ['python', 'is', 'a', 'great', 'language']
print(len(words))   # 5

csv_line = "Ali,25,Tehran"
parts = csv_line.split(",")
print(parts)        # ['Ali', '25', 'Tehran']

متد join() برعکس عمل می‌کند و عناصر یک لیست از رشته‌ها را با یک جداکننده به هم می‌چسباند:

words = ["Dev", "Source", "Python"]
print(" ".join(words))   # Dev Source Python
print("-".join(words))   # Dev-Source-Python
print(", ".join(["سیب", "موز", "پرتقال"]))

ترکیب split() و join() یک ترفند حرفه‌ای برای حذف فاصله‌های تکراری وسط متن است:

messy = "این    متن   فاصله‌های   زیادی دارد"
clean = " ".join(messy.split())
print(clean)   # این متن فاصله‌های زیادی دارد

۶. بررسی نوع محتوا: isdigit، isalpha و isalnum

این متدها True یا False برمی‌گردانند و برای اعتبارسنجی ورودی کاربر عالی هستند:

print("12345".isdigit())    # True
print("12a45".isdigit())    # False
print("Python".isalpha())   # True
print("Py3".isalnum())      # True
print("   ".isspace())      # True
print("HELLO".isupper())    # True

مثال کاربردی: قبل از تبدیل ورودی به عدد، بررسی می‌کنیم که واقعاً عدد باشد تا برنامه با خطا متوقف نشود:

age_text = "27"
if age_text.isdigit():
    age = int(age_text)
    print("سال بعد", age + 1, "ساله می‌شوید")
else:
    print("لطفاً فقط عدد وارد کنید")

۷. تراز کردن متن: center، ljust، rjust و zfill

print("Menu".center(20, "*"))   # ********Menu********
print("Name".ljust(10) + "|")   # Name      |
print("42".rjust(6, "."))       # ....42
print("7".zfill(3))             # 007

این متدها برای ساخت خروجی‌های مرتب در برنامه‌های خط فرمان، مثل منوها و جدول‌ها، کاربرد دارند. zfill() مخصوصاً برای ساخت شماره‌های سفارش یا کد با طول ثابت مفید است.

زنجیره کردن متدها

چون هر متد یک رشته جدید برمی‌گرداند، می‌توانیم متدها را پشت سر هم صدا بزنیم:

raw_email = "   Ali.Ahmadi@Gmail.COM  "
email = raw_email.strip().lower()
print(email)   # ali.ahmadi@gmail.com

تمرین کاربردی: تحلیل یک متن

در این تمرین تعداد کلمات، پرتکرارترین کلمه و نسخه تمیز یک متن را به دست می‌آوریم. در این تمرین از دیکشنری برای شمارش کلمات استفاده شده است:

text = "  Python is easy. Python is powerful. I love Python!  "

clean = text.strip().lower()
for sign in ".,!?":
    clean = clean.replace(sign, "")

words = clean.split()
counts = {}
for w in words:
    counts[w] = counts.get(w, 0) + 1

most_common = max(counts, key=counts.get)
print("تعداد کلمات:", len(words))            # 9
print("پرتکرارترین کلمه:", most_common)      # python
print("تعداد تکرار:", counts[most_common])   # 3

جدول خلاصه متدهای پرکاربرد رشته

  • upper() / lower() / title(): تغییر حروف
  • strip() / lstrip() / rstrip(): حذف فاصله یا کاراکتر از دو طرف
  • find() / index() / count(): جستجو و شمارش
  • startswith() / endswith(): بررسی شروع و پایان
  • replace(): جایگزینی
  • split() / join(): تبدیل رشته به لیست و برعکس
  • isdigit() / isalpha() / isalnum(): اعتبارسنجی
  • center() / ljust() / rjust() / zfill(): تراز

خطاهای رایج

  • انتظار تغییر رشته اصلی: name.upper() به‌تنهایی متغیر name را عوض نمی‌کند؛ باید بنویسید name = name.upper().
  • فراموش کردن پرانتز: text.upper بدون پرانتز خود متد را برمی‌گرداند، نه نتیجه را.
  • استفاده از join روی لیست عددی: "-".join([1, 2]) خطا می‌دهد؛ ابتدا عناصر را به رشته تبدیل کنید.
  • اشتباه گرفتن find و index: اگر احتمال نبودن عبارت وجود دارد، از find() استفاده کنید.

📌 همچنین بخوانید: بازار کار پایتون در ایران، نصب و تنظیم پایتون در VS Code و برنامه‌نویسی پایتون با گوشی

سؤالات متداول

چرا متد upper روی متن فارسی کار نمی‌کند؟

حروف فارسی بزرگ و کوچک ندارند؛ بنابراین متدهای تغییر حروف روی آن‌ها اثری ندارند ولی خطا هم نمی‌دهند.

تفاوت split() بدون آرگومان و split(” “) چیست؟

split() بدون آرگومان همه فاصله‌های پشت سر هم، تب و خط جدید را یک جداکننده حساب می‌کند و رشته خالی تولید نمی‌کند؛ اما split(" ") فقط تک‌فاصله را جداکننده می‌داند و ممکن است عنصر خالی بسازد.

چطور همه متدهای رشته را ببینم؟

دستور dir(str) فهرست همه متدها و help(str.replace) توضیح یک متد خاص را نمایش می‌دهد.

جمع‌بندی

در این آموزش پرکاربردترین متدهای رشته در پایتون را یاد گرفتیم: تغییر حروف، حذف فاصله، جستجو، جایگزینی، تقسیم و اتصال، اعتبارسنجی و تراز. همچنین دیدیم متدها رشته اصلی را تغییر نمی‌دهند و می‌توان آن‌ها را زنجیره‌ای صدا زد. با این ابزارها می‌توانید ورودی کاربر را تمیز کنید، متن را تحلیل کنید و خروجی‌های مرتب بسازید.

درس قبلی: رشته‌ها در پایتون؛ تعریف، ایندکس و برش

درس بعدی: قالب‌بندی رشته با f-string در پایتون

بازگشت به فهرست کامل دوره آموزش پایتون از صفر

می‌خواهی پیشرفتت ذخیره شود؟با ورود یا ثبت‌نام رایگان، درس‌های تمام‌شده را علامت بزن و درصد پیشرفتت را در حساب کاربری ببین.ورود / ثبت‌نام برای ذخیره پیشرفت
درس بعدی · دوره رایگان پایتون (مقدماتی) (15 از 16)قالب‌بندی رشته با f-string در پایتون؛ format و نمایش اعداد ←
آموزش‌های تازه، کد آماده و رفع خطاهر هفته در کانال Dev Source؛ رایگان.
🧭 مسیر یادگیری پایتون از صفر
ماژول 4: رشته‌ها و لیست‌ها — درس 15 از 44

برای ذخیره پیشرفت در همه دستگاه‌ها و دریافت گواهی پایان مسیر، رایگان ثبت‌نام کن یا وارد شو.

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

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