পাইথনে স্ট্রিং ফরম্যাটিংর তিনটি পদ্ধতি
১. পুরনো স্টাইল: % (Python 2, 3)
# বেসিক ফরম্যাট স্পেসিফায়ার
print('Number: %s' % 42) # String format
print('Number: %d' % 42) # Decimal
print('Number: %x' % 42) # Hex: 2a
print('Number: %g' % 42) # General float
# একাধিক ভ্যালু (টাপল ব্যবহার)
player = 'Roger Federer'
country = 'Legend'
titles = 20
print('Player: %s, Country: %s, Titles: %d' % (player, country, titles))
# উইডথ ও প্রিসিশন
print('%10s' % player) # Right align, width 10
print('%-10s' % player) # Left align
print('%10.5s' % player) # Width 10, max 5 chars
২. নতুন স্টাইল: .format() (Python 2.6+)
player = 'Roger Federer'
country = 'Legend'
titles = 20
# পজিশনাল
print('Player: {}, Country: {}, Titles: {}'.format(player, country, titles))
# পজিশনাল ইনডেক্স (রিঅর্ডারিং)
print('Titles: {2}, Player: {0}, Country: {1}'.format(player, country, titles))
# নেমড আর্গুমেন্ট
print('Player: {p}, Country: {c}, Titles: {t}'.format(p=player, c=country, t=titles))
# অ্যালাইনমেন্ট
print('{:<10} {:>10} {:^10}'.format('Left', 'Right', 'Center'))
# Left Right Center
৩. f-string (Python 3.6+) - সেরা ও রিকমেন্ডেড
player = 'Roger Federer'
country = 'Legend'
titles = 20
# বেসিক
print(f'Player: {player}, Country: {country}, Titles: {titles}')
# এক্সপ্রেশন
print(f'Next year titles: {titles + 1}')
# মেথড কল
print(f'Player upper: {player.upper()}')
# ফরম্যাট স্পেসিফায়ার
print(f'Titles: {titles:03d}') # 020 (zero-padded)
print(f'Rate: {3.14159:.2f}') # 3.14
print(f'Name: {player:>20}') # Right align width 20
print(f'Name: {player:*^20}') # Center with * padding
কেন f-string সেরা?
| ফিচার | % | .format() | f-string |
| রিডেবিলিটি | মিডিয়াম | ভালো | সেরা |
| পারফরম্যান্স | বেসলাইন | স্লোয়ার | ফাস্টেস্ট |
| এক্সপ্রেশন সাপোর্ট | না | সীমিত | হ্যাঁ |
| ডিবাগিং (Python 3.8+) | না | না | {var=} সিনট্যাক্স |
প্র্যাক্টিক্যাল উদাহরণ: রিপোর্ট জেনারেশন
players = [('federer', 20), ('nadal', 20), ('djokovic', 17)]
# পুরনো স্টাইল - ক্লאנקি
for i, (p, t) in enumerate(players):
print('#%d: %-10s = %d' % (i+1, p.title(), t))
# f-string - ক্লিন
for i, (p, t) in enumerate(players):
print(f'#{i+1}: {p.title():<10} = {t}')
উপসংহার
- Python 3.6+ এ f-string ব্যবহার করুন — ফাস্ট, রিডেবল, পাওয়ারফুল
- লিগ্যাসি কোড মেইনটেইন করতে হলে
% বা .format() বুঝতে হলে
- ফরম্যাট স্পেসিফায়ার (
:.2f, :>10, :03d) সব পদ্ধতিতে কাজ করে