کار عمیق با رشتهها
در این درس رشته را بهچشم دنباله میبینید، با برش دادن و متدهای پرکاربرد متن را پردازش میکنید و اعداد را با f-string قالببندی میکنید.
آنچه در این درس میآموزید
- رشته را با اندیس و برش دادن (Slicing) به قطعههای دلخواه بشکنید
- متدهای پرکاربرد رشته مثل strip و split و join را بهجا استفاده کنید
- اعداد را با مشخصکنندههای f-string قالببندی کنید
فهرست مطالب
رشته را از نخستین درسها میشناسید و بارها در print و f-string به کار بردهاید. اما رشته فقط «متن» نیست؛ دنبالهای از نویسهها (Character) است و دقیقاً مثل لیست رفتار میکند: اندیس دارد، برش میخورد و متدهای فراوانی برای پردازش دارد. چون متن مهمترین رابط برنامه با دنیای بیرون است — ورودی کاربر، فایلها، وب — تسلط بر این ابزارها در هر پروژهای به کار میآید.
در این درس رشته را اندیس میزنیم و برش میدهیم، پرکاربردترین متدها را میبینیم و قالببندی اعداد را کامل میکنیم.
رشته بهعنوان دنباله
هر نویسهٔ رشته یک جایگاه شمارهدار دارد؛ همان قواعد درس لیست، این بار روی متن:
word = "python"
print(word[0])
print(word[-1])
print(len(word))p n 6
هر نویسه یک جایگاه در حافظه است؛ len تعداد نویسهها را میشمارد و اندیس منفی از انتها میشمارد.
برش دادن رشته
برش دادن (Slicing) قطعهای از دنباله را برمیدارد؛ الگویش [شروع:پایان] است و نکتهٔ مهم اینکه عضوِ جایگاه «پایان» خودش در برش نمیآید:
word = "python"
print(word[0:3])
print(word[3:])
print(word[::-1])pyt hon nohtyp
برش 0:3 نویسههای اندیس ۰ تا ۲ را میدهد (اندیس ۳ نمیآید). اگر یکی از دو عدد را ننویسید، پایتون از ابتدا یا تا انتها میرود. الگوی [::-1] با گام منفی، رشته را برعکس میکند؛ گام سومی است که بهندرت لازم میشود ولی برای معکوسکردن معروف است.
متدهای پرکاربرد رشته
پایتون دهها متد آماده برای رشته دارد؛ پرمصرفترینها را یکجا ببینید:
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().
:::
جستوجو و شمارش
برای پرسوجو از محتوای متن، سه ابزار ساده کافی است:
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 را برای جایگذاری متغیر دیدید؛ بعد از نقطه میتوانید قالب دقیق هم بدهید:
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 بنویسید که نام و نام خانوادگی را شاید با فاصلههای اضافه بگیرد و رشتهای به شکل «نام خانوادگی، نام» برگرداند؛ فاصلههای اضافهٔ دو سر باید حذف شوند. برای ورودیهای " علی " و " رضایی " خروجی باید رضایی, علی باشد.
# Write your code hereنمایش راهحل
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%اعداد را دقیق قالببندی میکند.
تا اینجا همهٔ برنامهها را نوشتیم که بدون مانع اجرا شوند؛ اما دنیای واقعی ورودی خراب و فایل ناموجود دارد. در درس بعد — و آغاز سرفصل تازه — میآموزیم چطور خطاها را مدیریت کنیم تا برنامه بهجای فروپاشی، باوقار برخورد کند.