قالب بندی رشته (String Formatting)
اینجا مفهوم «قالب بندی رشته» را یاد می گیریم. قالب بندی یعنی چیدن مقادیر داخل متن. در پایتون، f-string روش پیش فرض است. «f-string» رشته ای با حرف f در اول است. سپس آکولادها مقدارها را نشان می دهند.
f-string چیست؟
f-string از پایتون 3.6 آمده است. اکنون روش توصیه شده است.
txt = f"The price is 49 dollars"
print(txt)
جای نگهدار و مُبدّل ها
جای نگهدار {} داخل رشته می آید. سپس می تواند متغیر یا عمل باشد.
price = 59
txt = f"The price is {price} dollars"
print(txt)
مُبدّل با دونقطه می آید. مثلاً .2f یعنی دو رقم اعشار.
price = 59
txt = f"The price is {price:.2f} dollars"
print(txt)
می توان مقدار ثابت را هم مستقیم قالب بندی کرد.
txt = f"The price is {95:.2f} dollars"
print(txt)
عملیات داخل f-string
می توان عملیات ریاضی را داخل {} نوشت. خروجی همان جا می آید.
txt = f"The price is {20 * 59} dollars"
print(txt)
می توان روی متغیرها هم عمل کرد. مانند اضافه کردن مالیات.
price = 59
tax = 0.25
txt = f"The price is {price + (price * tax)} dollars"
print(txt)
حتی شرط if...else هم می شود. مانند برچسب ارزان یا گران.
price = 49
txt = f"It is very {'Expensive' if price > 50 else 'Cheap'}"
print(txt)
اجرای تابع داخل f-string
می توان تابع صدا زد. نتیجه تابع داخل متن می نشیند.
fruit = "apples"
txt = f"I love {fruit.upper()}"
print(txt)
توابع خودت هم قابل استفاده اند. مثل تبدیل فوت به متر.
def myconverter(x):
return x * 0.3048
txt = f"The plane is flying at a {myconverter(30000)} meter altitude"
print(txt)
مُبدّل های بیشتر
مثلاً جداکننده هزارگان با کاما می آید. دیگر مُبدّل ها هم هستند.
price = 59000
txt = f"The price is {price:,} dollars"
print(txt)
فهرست کامل مُبدّل ها در همین صفحه منبع است.
روش قدیمی: متد format()
قبل از f-string از format() استفاده می شد. هنوز هم کار می کند.
price = 49
txt = "The price is {} dollars"
print(txt.format(price))
format هم مُبدّل دارد. مثلاً دو رقم اعشار.
txt = "The price is {:.2f} dollars"
print(txt.format(49))
می توان چند مقدار فرستاد. ترتیب جای نگهدارها مهم است.
quantity = 3
itemno = 567
price = 49
myorder = "I want {} pieces of item number {} for {:.2f} dollars."
print(myorder.format(quantity, itemno, price))
می توان با شماره گذاری، جای مقادیر را دقیق کرد.
quantity = 3
itemno = 567
price = 49
myorder = "I want {0} pieces of item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))
می توان یک مقدار را چندبار تکرار کرد.
age = 36
name = "John"
txt = "His name is {1}. {1} is {0} years old."
print(txt.format(age, name))
با نام گذاری، کد خواناتر می شود.
myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname = "Ford", model = "Mustang"))
گام های عملی
- یک رشته f بساز و {} اضافه کن.
- یک متغیر بگذار و چاپ کن.
- مُبدّل .2f را تست کن.
- یک if...else کوتاه داخل {} قرار بده.
جمع بندی سریع
- f-string سریع و خواناست.
- {} محل نمایش مقدار است.
- مُبدّل ها با : می آیند.
- format() هنوز کار می کند.
- قالب بندی رشته پایه خروجی حرفه ای است.
نکته: برای مدیریت خطا هنگام چاپ، صفحه try...except را ببین. همچنین بسته ها را با مدیر بسته ها (PIP) نصب کن.