قالببندی رشتهها (String Formatting) در پایتون
در پایتون، ترکیب متغیرها با رشتهها میتواند به روشهای مختلفی انجام شود. قالببندی رشته روشی قدرتمند، منعطف و خوانا برای قرار دادن مقادیر مختلف درون رشتههاست، بدون نیاز به تبدیل دستی آنها به رشته.
۱. استفاده از str.format()
روش format
یکی از راههای کلاسیک برای قالببندی رشتههاست. در این روش، با استفاده از آکولاد {}
جاهای خالی در متن مشخص میشود و مقادیر از طریق format()
جایگزین میگردند.
nums = [4, 5, 6]
msg = "Numbers: {0} {1} {2}".format(nums[0], nums[1], nums[2])
print(msg)
خروجی:
Numbers: 4 5 6
همچنین میتوانید از پارامترهای نامگذاریشده استفاده کنید:
text = "{x}, {y}".format(x=5, y=12)
print(text)
5, 12
۲. قالببندی با f-strings
(از پایتون 3.6 به بعد)
f-string یا formatted string literal راهی مدرن، سریع و خواناتر برای قالببندی رشتههاست. در این روش، متغیرها مستقیماً داخل رشته و داخل آکولاد استفاده میشوند، با پیشوند f
در ابتدای رشته.
name = "Alice"
age = 30
msg = f"{name} is {age} years old."
print(msg)
Alice is 30 years old.
مزیت f-string: پشتیبانی از عبارات داخل آکولاد:
a = 10
b = 5
print(f"{a} + {b} = {a + b}")
10 + 5 = 15
۳. استفاده از عملگر %
(روش قدیمی)
این روش که از زبان C الهام گرفته شده، در پایتون قدیمیتر استفاده میشد و هنوز هم پشتیبانی میشود، ولی پیشنهاد نمیشود مگر برای سازگاری با کدهای قدیمی.
name = "Bob"
age = 25
print("Name: %s, Age: %d" % (name, age))
Name: Bob, Age: 25
۴. قالببندی با مشخصات دقیقتر
در هر روش میتوان قالببندی عددی، اعشار، تراز، و پر کردن را نیز کنترل کرد. مثالها:
# تنظیم تعداد اعشار
pi = 3.14159265
print(f"π ≈ {pi:.2f}") # π ≈ 3.14
# تراز راست
print(f"{'Product':>10} | {'Price':>5}")
print(f"{'Apple':>10} | {5:>5.2f}")
# پر کردن با صفر
print(f"{42:04d}") # 0042
تغییرات در نسخههای جدید پایتون:
- پایتون 3.6: معرفی f-string به عنوان سریعترین و خواناترین روش.
- پایتون 3.8: پشتیبانی از عملگر
:=
(walrus) در f-string برای تخصیص همزمان.
print(f"{(n := 10) * 2}") # 20
جمعبندی:
هرچند روشهای قدیمیتر همچنان پشتیبانی میشوند، استفاده از f-string توصیهشدهترین روش در پایتونهای جدید است، چرا که ترکیبی از خوانایی، کارایی و انعطافپذیری بالاست.