পাইথনে আউটপুট ফরম্যাট করার একাধিক পদ্ধতি রয়েছে। আধুনিক পাইথন (৩.৬+) এ f-স্ট্রিং (f-strings) সবচেয়ে শক্তিশালী এবং পঠনযোগ্য। পুরানো পদ্ধতিগুলোও লিগেসি কোডে দেখা যায়। নিচে সব পদ্ধতির তুলনা দেওয়া হলো।
১. f-স্ট্রিং (Formatted String Literals) — পাইথন ৩.৬+ (সুপারিশ করা)
name = "Vishesh"
age = 25
score = 95.667
# বেসিক
print(f"Name: {name}, Age: {age}, Score: {score}")
# ফরম্যাট স্পেসিফিকেশন
print(f"Score: {score:.2f}") # ২ দশমিক: 95.67
print(f"Score: {score:>10.2f}") # ডান সাজানো, ১০ ক্যারেক্টার প্রস্থ
print(f"Score: {score:0>10.2f}") # ০ দিয়ে প্যাডিং: 000095.67
print(f"Score: {score:<10.2f}") # বাম সাজানো
print(f"Score: {score:^10.2f}") # কেন্দ্র সাজানো
# এক্সপ্রেশন
print(f"Next year age: {age + 1}")
print(f"Hex: {age:#x}") # 0x19
print(f"Binary: {age:#b}") # 0b11001
# ডিকশনারি আনপ্যাক
data = {"name": "Vishesh", "lang": "Python"}
print(f"I love {data['lang']}") # I love Python
২. str.format() মেথড — পাইথন ২.৬+ (f-স্ট্রিং-এর পূর্বরূপ)
# পজিশনাল আর্গুমেন্ট
print("{} loves {}".format("Vishesh", "Python"))
# নামড আর্গুমেন্ট
print("{name} loves {lang}".format(name="Vishesh", lang="Python"))
# ইনডেক্স ব্যবহার
print("{0} loves {1}, {0} is {2}".format("Vishesh", "Python", "awesome"))
# ফরম্যাট স্পেসিফিকেশন
print("Score: {:.2f}".format(95.667))
print("Score: {:>10.2f}".format(95.667))
# ডিকশনারি আনপ্যাক
tab = {'Vishesh': 4127, 'for': 4098, 'python': 8637678}
print('Vishesh: {0[Vishesh]:d}; For: {0[for]:d}; Python: {0[python]:d}'.format(tab))
# ** অপারেটর দিয়ে আনপ্যাক
data = dict(fun="VisheshforPython", adj="Python")
print("I love {fun} computer {adj}".format(**data))
৩. স্ট্রিং মডুলো অপারেটর (%) — লিগেসি (C-স্টাইল)
# ইন্টিজার
print("Vishesh: %d, Portal: %.2f" % (1, 5.333))
# Vishesh: 1, Portal: 5.33
# উইডথ এবং প্রিসিশন
print("Total: %3d, Boys: %2d" % (240, 120))
# অক্টাল, হেক্স, এক্সপোনেনশিয়াল
print("%7.3o" % (25)) # অক্টাল: 031
print("%10.3E" % (356.08977)) # এক্সপোনেনশিয়াল: 3.561E+02
# ডিকশনারি (পুরানো সিনট্যাক্স)
print("%(name)s is %(age)d" % {"name": "Vishesh", "age": 25})
৪. স্ট্রিং মেথডস: אלাইনমেন্ট এবং প্যাডিং
cstr = "I love python" # কেন্দ্র সাজানো (ফিল ক্যারেক্টারসহ) print(cstr.center(40, '$')) # $$$$$$$$$$$$$I love python$$$$$$$$$$$$$$ # বাম সাজানো (লেফট জাস্টিফাই) print(cstr.ljust(40, '-')) # I love python--------------------------- # ডান সাজানো (রাইট জাস্টিফাই) print(cstr.rjust(40, '-')) # ---------------------------I love python # zfill: সংখ্যার জন্য ০ প্যাডিং print(str(42).zfill(6)) # 000042
তুলনা টেবিল
| পদ্ধতি | পাইথন ভার্সন | পারফরম্যান্স | পঠনযোগ্যতা | ফিচার |
|---|---|---|---|---|
| f-স্ট্রিং | 3.6+ | সবচেয়ে দ্রুত | ★★★★★ | এক্সপ্রেশন, ডিবাগ (=), সব ফরম্যাট |
| str.format() | 2.6+ | মাঝারি | ★★★★☆ | ডিকশনারি আনপ্যাক, কমপ্লেক্স লেআউট |
| % অপারেটর | 1.x+ | ধীর | ★★★☆☆ | লিগেসি, লগিং মডিউল কম্প্যাটিবিলিটি |
| স্ট্রিং মেথড | সব | দ্রুত | ★★★★☆ | সিম্পল অ্যালাইনমেন্ট/প্যাডিং |
সেরা অনুশীলন
- নতুন কোডে সবসময় f-স্ট্রিং ব্যবহার করুন।
- লগিং মডিউল ব্যবহার করলে
%ফরম্যাট বাধ্যতামূলক (lazy evaluation-র জন্য)। - বহুভাষিক অ্যাপের জন্য
format()বাgettextব্যবহার করুন (টেমপ্লেট আলাদা ফাইলে রাখা যায়)। f"{var=}"সিনট্যাক্স (পাইথন ৩.৮+) ডিবাগিং-এ জাদুই:f"{x=}"→x=42।