فرمت‌بندی رشته در پایتون

قالب‌بندی رشته با f-string، متد format() و قالب‌بندی اعداد

چرا فرمت‌بندی رشته؟

اغلب می‌خواهید متغیرها را داخل یک رشته قرار دهید. پایتون چند روش برای این کار ارائه می‌دهد.

روش ۱: f-string (بهترین روش!)

f-string (معرفی در پایتون ۳.۶) مدرن‌ترین و ساده‌ترین روش است. کافیست قبل از رشته حرف f بگذارید و متغیرها را داخل { } قرار دهید:

name = "علی"
age = 25

# f-string
print(f"اسم من {name} است و {age} سال دارم.")
# اسم من علی است و ۲۵ سال دارم.

عبارات داخل f-string

می‌توانید محاسبات هم انجام دهید:

x = 10
y = 3
print(f"{x} + {y} = {x + y}")  # 10 + 3 = 13
print(f"{x} × {y} = {x * y}")  # 10 × 3 = 30

فرمت‌بندی اعداد

pi = 3.14159265
print(f"عدد پی: {pi:.2f}")  # 3.14 (۲ رقم اعشار)
print(f"عدد پی: {pi:.4f}")  # 3.1416 (۴ رقم اعشار)

# جداکننده هزارگان
big_number = 1000000
print(f"{big_number:,}")  # 1,000,000

# درصد
ratio = 0.85
print(f"{ratio:.0%}")  # 85%

ترازبندی

# عرض ثابت
print(f"{'نام':<15} {'سن':>5}")
print(f"{'علی':<15} {25:>5}")
print(f"{'مریم':<15} {30:>5}")

روش ۲: متد format()

قبل از f-string، از متد format() استفاده می‌شد:

name = "علی"
age = 25

# با موقعیت
print("اسم {} و {} سال دارم.".format(name, age))

# با شماره موقعیت
print("{0} {1} {0}".format("سلام", "دنیا"))  # سلام دنیا سلام

# با نام
print("اسم {n} و سن {a}.".format(n=name, a=age))

روش ۳: الحاق ساده (+)

name = "علی"
age = 25
print("اسم " + name + " و " + str(age) + " سال دارم.")
با + باید اعداد را با str() به رشته تبدیل کنید، وگرنه خطا می‌دهد. به همین دلیل f-string بهتر است.

روش ۴: عملگر % (قدیمی)

این روش از زبان C آمده و کمتر توصیه می‌شود:

name = "علی"
age = 25
print("اسم %s و %d سال دارم." % (name, age))

مقایسه روش‌ها

روشخواناییسرعتتوصیه
f-string⭐⭐⭐⭐⭐سریع‌ترین✅ بهترین
format()⭐⭐⭐متوسطقبلی
+ الحاق⭐⭐کند❌ نه
% عملگر⭐⭐کند❌ قدیمی

فرمت‌بندی پیشرفته با f-string

اعشار ثابت

price = 99.5678
print(f"قیمت: {price:.2f} تومان")  # قیمت: 99.57 تومان

عرض و پر کردن

# پر کردن با صفر
num = 42
print(f"{num:05d}")  # 00042

# عرض ثابت
print(f"{num:10d}")  #         42 (راست‌چین)
print(f"{num:<10d}") # 42        (چپ‌چین)
print(f"{num:^10d}") #     42    (وسط‌چین)

اعداد علمی

big = 123456789
print(f"{big:e}")  # 1.234568e+08

اعداد باینری، هگز

n = 255
print(f"باینری: {n:b}")   # 11111111
print(f"هگز: {n:x}")      # ff
print(f"اوکتال: {n:o}")   # 377

چند مثال کاربردی

جدول قالب‌بندی‌شده

students = [("علی", 18.5), ("مریم", 19.2), ("حسن", 17.8)]
print(f"{'نام':<10} {'میانگین':>10}")
print("-" * 22)
for name, avg in students:
    print(f"{name:<10} {avg:>10.2f}")

نمایش قیمت

items = [("کتاب", 150000), ("مداد", 12000), ("دفتر", 45000)]
for name, price in items:
    print(f"{name}: {price:>10,} تومان")

debug با f-string (پایتون ۳.۸+)

با اضافه کردن = بعد از متغیر، نام و مقدار هر دو چاپ می‌شوند:

x = 42
name = "علی"
print(f"{x=}, {name=}")  # x=42, name='علی'

خلاصه

این مبحث بخشی از دوره آموزش کامل پایتون است.

ابزارهای مرتبط