پایتونمتوسط۶ دقیقه مطالعهPython 3.12+

کار عمیق با رشته‌ها

در این درس رشته را به‌چشم دنباله می‌بینید، با برش دادن و متدهای پرکاربرد متن را پردازش می‌کنید و اعداد را با f-string قالب‌بندی می‌کنید.

آنچه در این درس می‌آموزید

  • رشته را با اندیس و برش دادن (Slicing) به قطعه‌های دلخواه بشکنید
  • متدهای پرکاربرد رشته مثل strip و split و join را به‌جا استفاده کنید
  • اعداد را با مشخص‌کننده‌های f-string قالب‌بندی کنید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب
پیش‌نیاز: لیست‌ها

رشته را از نخستین درس‌ها می‌شناسید و بارها در print و f-string به کار برده‌اید. اما رشته فقط «متن» نیست؛ دنباله‌ای از نویسه‌ها (Character) است و دقیقاً مثل لیست رفتار می‌کند: اندیس دارد، برش می‌خورد و متدهای فراوانی برای پردازش دارد. چون متن مهم‌ترین رابط برنامه با دنیای بیرون است — ورودی کاربر، فایل‌ها، وب — تسلط بر این ابزارها در هر پروژه‌ای به کار می‌آید.

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

رشته به‌عنوان دنباله

هر نویسهٔ رشته یک جایگاه شماره‌دار دارد؛ همان قواعد درس لیست، این بار روی متن:

index.py
word = "python"
print(word[0])
print(word[-1])
print(len(word))
خروجی کد

p n 6

هر نویسه یک جایگاه در حافظه است؛ len تعداد نویسه‌ها را می‌شمارد و اندیس منفی از انتها می‌شمارد.

برش دادن رشته

برش دادن (Slicing) قطعه‌ای از دنباله را برمی‌دارد؛ الگویش [شروع:پایان] است و نکتهٔ مهم اینکه عضوِ جایگاه «پایان» خودش در برش نمی‌آید:

slice.py
word = "python"
print(word[0:3])
print(word[3:])
print(word[::-1])
خروجی کد

pyt hon nohtyp

برش 0:3 نویسه‌های اندیس ۰ تا ۲ را می‌دهد (اندیس ۳ نمی‌آید). اگر یکی از دو عدد را ننویسید، پایتون از ابتدا یا تا انتها می‌رود. الگوی [::-1] با گام منفی، رشته را برعکس می‌کند؛ گام سومی است که به‌ندرت لازم می‌شود ولی برای معکوس‌کردن معروف است.

متدهای پرکاربرد رشته

پایتون ده‌ها متد آماده برای رشته دارد؛ پرمصرف‌ترین‌ها را یک‌جا ببینید:

methods.py
text = "  Hello World  "
print(text.strip().lower())

sentence = "python is really simple"
words = sentence.split()
print(len(words))
print("*".join(words))

print(sentence.replace("simple", "elegant"))
خروجی کد

hello world 4 pythonisreally*simple python is really elegant

  • strip فاصله‌های اضافهٔ دو سر رشته را می‌تراشد؛ برای پاک‌سازی ورودی کاربر حیاتی است.
  • lower حروف را کوچک می‌کند (برای حروف الفبای لاتین).
  • split بدون آرگومان روی هر توالی فاصله می‌شکند و لیست کلمه‌ها می‌دهد.
  • join برعکس split است: لیست کلمه‌ها را با جداکنندهٔ دلخواه به یک رشته می‌چسباند.
  • replace همهٔ رخدادهای یک زیررشته را جایگزین می‌کند.

فراخوانی name.upper() بی‌اثر ماند چون نتیجه جایی ذخیره نشد. الگوی درست: name = name.upper(). :::

جست‌وجو و شمارش

برای پرس‌وجو از محتوای متن، سه ابزار ساده کافی است:

search.py
text = "python is simple and python is powerful"
print(text.count("python"))
print(text.find("powerful"))
print(text.find("java"))
print("simple" in text)
خروجی کد

2 31 -1 True

count تعداد رخدادهای زیررشته را می‌دهد. find اندیس نخستین رخداد را می‌دهد و اگر پیدا نکند -1 برمی‌گرداند؛ پس جواب را همیشه با مقایسه با -1 بسنجید. اگر فقط وجود و نبود مهم است، in خواناترین انتخاب است.

قالب‌بندی اعداد با f-string

در درس ورودی و خروجی f-string را برای جای‌گذاری متغیر دیدید؛ بعد از نقطه می‌توانید قالب دقیق هم بدهید:

format.py
price = 1234.5
print(f"Price: {price:.2f}")
ratio = 0.8571
print(f"Accuracy: {ratio:.1%}")
خروجی کد

Price: 1234.50 Accuracy: 85.7%

مشخص‌کنندهٔ :.2f یعنی عدد را با دو رقم اعشار بنویس؛ برای قیمت و نمره همیشه لازم است. :.1% عدد را در ۱۰۰ ضرب می‌کند، علامت درصد می‌گذارد و با یک رقم اعشار نمایش می‌دهد؛ مناسب نسبت‌ها.

تمرین‌ها

تمرین

تمرین ۱ — قالب‌بندی نام

تابعی به نام format_name بنویسید که نام و نام خانوادگی را شاید با فاصله‌های اضافه بگیرد و رشته‌ای به شکل «نام خانوادگی، نام» برگرداند؛ فاصله‌های اضافهٔ دو سر باید حذف شوند. برای ورودی‌های " علی " و " رضایی " خروجی باید رضایی, علی باشد.

python
# Write your code here
نمایش راه‌حل
python
def format_name(first, last):
    return f"{last.strip()}, {first.strip()}"

print(format_name("  Ali  ", "  Rezaei "))
خروجی کد

Rezaei, Ali

::: :::

خلاصه

  • رشته دنباله‌ای از نویسه‌هاست؛ اندیس و len() در آن مثل لیست کار می‌کند.
  • برش [شروع:پایان] عضوِ جایگاه پایان را نمی‌گیرد و [::-1] رشته را معکوس می‌کند.
  • strip و split و join و replace ستون اصلی پاک‌سازی و پردازش متن‌اند.
  • متدهای رشته رشتهٔ تازه برمی‌گردانند؛ نتیجه را باید در متغیر ریخت.
  • f-string با مشخص‌کننده‌هایی مثل :.2f و :.1% اعداد را دقیق قالب‌بندی می‌کند.

تا اینجا همهٔ برنامه‌ها را نوشتیم که بدون مانع اجرا شوند؛ اما دنیای واقعی ورودی خراب و فایل ناموجود دارد. در درس بعد — و آغاز سرفصل تازه — می‌آموزیم چطور خطاها را مدیریت کنیم تا برنامه به‌جای فروپاشی، باوقار برخورد کند.

منابع و ارجاع‌ها