আমরা বিভিন্ন ফরম্যাট ব্যবহার করে স্ট্রিংগুলিতে ডেটা মানগুলিকে ইন্টারপোলেট করতে পারি। আমরা এটি কোড ডিডগ করতে, রিপোর্ট, ফর্ম এবং অন্যান্য আউটপুট তৈরি করতে ব্যবহার করতে পারি। এই বিষয়ে, আমরা স্ট্রিং ফর্ম্যাট করার তিনটি উপায় এবং স্ট্রিংগুলিতে ডেটা মানগুলিকে কীভাবে ইন্টারপোলেট করা যায় তা দেখব৷
পাইথনে স্ট্রিং ফর্ম্যাট করার তিনটি উপায় রয়েছে:
-
% - পুরানো স্কুল (পাইথন 2 এবং 3 সমর্থিত)
-
() - নতুন শৈলী (পাইথন 2.6 এবং উচ্চতর)
-
{} - f-স্ট্রিংস (পাইথন 3.6 এবং তার বেশি)
পুরাতন শৈলী:%
স্ট্রিং ফরম্যাটিং এর পুরানো শৈলীতে ফর্ম format_string % ডেটা রয়েছে। ফরম্যাট স্ট্রিংগুলি ইন্টারপোলেশন সিকোয়েন্স ছাড়া আর কিছুই নয়।
সিনট্যাক্স | বর্ণনা |
---|---|
%s | স্ট্রিং৷ |
%d | দশমিক৷ |
%x | হেক্সা-ইন্ট |
%o | অক্টাল-int৷ |
%f | ডেসিমাল-ফ্লোট |
%e | exponential-float |
%g | দশমিক বা সূচক-ফ্লোট৷ |
%% | আক্ষরিক % |
# প্রিন্টিং পূর্ণসংখ্যা % style type.print('আউটপুট \nস্ট্রিং ফরম্যাটে একটি সংখ্যা প্রিন্ট করা %s' % 42) প্রিন্ট ('প্রিন্টিং দশমিক স্ট্রিং %d' % 42)প্রিন্ট ('এ একটি সংখ্যা মুদ্রণ স্ট্রিং হেক্সা-ইন্ট %x' % 42)প্রিন্ট ('স্ট্রিং এক্সপোনেনশিয়াল-ফ্লোটে একটি সংখ্যা প্রিন্ট করা হচ্ছে %g' % 42)
আউটপুট
স্ট্রিং ফরম্যাটে একটি সংখ্যা প্রিন্ট করা 42 স্ট্রিং দশমিকে একটি সংখ্যা প্রিন্ট করা 42 স্ট্রিং হেক্সা-ইনটে একটি সংখ্যা প্রিন্ট করা 2 স্ট্রিং এক্সপোনেনশিয়াল-ফ্লোট 42 এ একটি সংখ্যা প্রিন্ট করা
পুরনো বিন্যাস %
সহ স্ট্রিং এবং ইন্টিজার ইন্টারপোলেশনস্ট্রিং এর ভিতরে %s মানে হল একটি স্ট্রিং ইন্টারপোলেট করা। স্ট্রিং-এ % উপস্থিতির সংখ্যা স্ট্রিং অনুসরণকারী %-এর পরে ডেটা আইটেমের সংখ্যার সাথে মিলতে হবে।
একটি একক ডেটা আইটেম ঠিক যে চূড়ান্ত % পরে করে. একাধিক ডেটা একটি টিপলে গোষ্ঠীবদ্ধ করা আবশ্যক, নীচের উদাহরণ দেখুন৷
৷ন্যূনতম এবং সর্বোচ্চ প্রস্থ, প্রান্তিককরণ এবং অক্ষর পূরণ নির্দিষ্ট করতে আপনি % এবং টাইপ স্পেসিফায়ারের মধ্যে ফর্ম্যাট স্ট্রিং-এ অন্যান্য মানও যোগ করতে পারেন।
<পূর্ব>1. + মানে ডান-সারিবদ্ধ 2। - মানে বাম-সারিবদ্ধ3। . মানে আলাদা minwidth এবং maxchars.4. minwidth মানে mimimu ক্ষেত্রের প্রস্থ to use5. ম্যাক্সচার মানে ডেটা মান থেকে কতগুলি অক্ষর/সংখ্যা প্রিন্ট করতে হবে
player ='Roger Federer'country ='Legend'titles =20# note অনুগ্রহ করে এটি শুধুমাত্র Python 2 তে চেষ্টা করুন। আপনি যদি Python3 আউটপুটে নিচের কমান্ডের জন্য চালান তাহলে অনেক পরিবর্তিত হবে। প্রিন্ট('আউটপুট \n** * টেনিস প্লেয়ার %s %s থেকে %d টাইটেল জিতেছে ' %(খেলোয়াড়,দেশ,টাইটেল) %-7s' % প্লেয়ার) # প্লেয়ারপ্রিন্টের শেষ নাম('%5.7s' % প্লেয়ার) # 5টি লিডিং স্পেস সহ প্লেয়ারের শেষ নাম
আউটপুট
*** কিংবদন্তি থেকে টেনিস খেলোয়াড় রজার ফেদেরার 20টি শিরোপা জিতেছিলেন রজার ফেদেরাররজার ফেদেরাররজার ফেদেরার রজার এফ
নতুন শৈলী সহ স্ট্রিং এবং পূর্ণসংখ্যা ইন্টারপোলেশন:{}
আপনি যদি পাইথন 3.5 বা উচ্চতর সংস্করণ ব্যবহার করেন তবে আপনি নীচের বিভাগে বর্ণিত "নতুন শৈলী" ফর্ম্যাটিং ব্যবহার করতে পারেন৷
“{}” ফরম্যাটিং-এ format_string.format(data) হিসেবে সিনট্যাক্স রয়েছে।
মনে রাখবেন, ফরম্যাট() ফাংশনের আর্গুমেন্টগুলি ফরম্যাটের স্ট্রিং-এ {} প্লেসহোল্ডারগুলির ক্রমানুসারে হওয়া দরকার৷ কখনও কখনও আরও পড়ার-ক্ষমতার জন্য আপনি বিন্যাসে অভিধান বা নামযুক্ত আর্গুমেন্টগুলি পাস করতে পারেন৷
player ='Roger Federer' player ='Roger_Federer'country ='Legend'titles =20print('output \n{}'.format(player))print(' *** টেনিস খেলোয়াড় {} থেকে {} ছিল জিতেছে {} শিরোনাম '.ফর্ম্যাট(খেলোয়াড়,দেশ,শিরোনাম))# পজিটোনাল আর্গুমেন্টসপ্রিন্ট(' *** টেনিস খেলোয়াড় {1} {2} থেকে {0}টি শিরোনাম জিতেছেন '.ফর্ম্যাট(টাইটেল,প্লেয়ার,দেশ)# নামযুক্ত আর্গুমেন্টসপ্রিন্ট(' *** টেনিস খেলোয়াড় {খেলোয়াড়} {দেশ} থেকে {টাইটেল} শিরোনাম জিতেছিল '.ফরম্যাট(খেলোয়াড় ='রজার ফেদেরার', দেশ ='লেজেন্ড', টাইটেল =20))# ডিকশনারি আর্গুমেন্টপ্রিন্ট(' * ** টেনিস খেলোয়াড় {খেলোয়াড়} {দেশ} থেকে {টাইটেল} শিরোনাম জিতেছিল '.ফর্ম্যাট(খেলোয়াড় ='রজার ফেদেরার', দেশ ='লেজেন্ড', টাইটেল =20))# প্রান্তিককরণ বাকি '<' (ডিফল্ট)মুদ্রণ( ' *** টেনিস খেলোয়াড় {} থেকে {:<5s} জিতেছেন {:<5d} শিরোনাম '.ফর্ম্যাট(প্লেয়ার,দেশ,টাইটেল))# প্রান্তিককরণ বাকি '<' (ডিফল্ট)প্রিন্ট(' *** টেনিস খেলোয়াড় {} থেকে {:<5s} জিতেছিল {:<5d} শিরোনাম '.format(player,country,titles))# অ্যালাইনমেন্ট সেন্টার '^'print(' *** টেনিস প্লেয়ার {} থেকে {:^10s} জিতেছিল জিতেছে {:^10d} শিরোনাম '.format(player,country,title) s))# alignment right '>'print(' *** টেনিস প্লেয়ার {} {:>10s} থেকে {:>10d} টাইটেল জিতেছেন '.format(player,country,titles))
আউটপুট
Roger_Federer *** কিংবদন্তি থেকে টেনিস খেলোয়াড় রজার_Federer 20 খেতাব জিতেছিলেন *** টেনিস খেলোয়াড় রজার_Federer From Legend 20 খেতাব জিতেছিলেন *** টেনিস খেলোয়াড় রজার ফেদেরার from Legend 20 টাইটেল জিতেছিলেন *** টেনিস খেলোয়াড় রজার ফেদেরার লিজেন্ড থেকে 20টি শিরোপা জিতেছিলেন *** কিংবদন্তি থেকে টেনিস খেলোয়াড় রজার_ফেদেরার 20টি শিরোপা জিতেছিলেন *** কিংবদন্তি থেকে টেনিস খেলোয়াড় রজার_ফেদেরার 20টি শিরোপা জিতেছিলেন *** কিংবদন্তি থেকে টেনিস খেলোয়াড় রজার_ফেদেরার 20টি শিরোপা জিতেছিলেন *** টেনিস খেলোয়াড় রজার_ফেদেরার লিজেন্ড থেকে 20টি শিরোপা জিতেছিলেন 20টি শিরোনাম
সর্বশেষ শৈলী সহ স্ট্রিং এবং পূর্ণসংখ্যার ইন্টারপোলেশন:f-স্ট্রিংস
f-স্ট্রিংগুলি পাইথন 3.6-এ উপস্থিত হয়েছিল এবং শীঘ্রই স্ট্রিং ফর্ম্যাট করার প্রস্তাবিত উপায় হয়ে ওঠে। ব্যক্তিগতভাবে আমি, এই বিন্যাসটি ব্যবহার করি। একটি f-স্ট্রিং তৈরি করতে:
1. প্রারম্ভিক/প্রাথমিক উদ্ধৃতির আগে f/F অক্ষর ব্যবহার করুন।
2. স্ট্রিং-এ তাদের মান পেতে কোঁকড়া বন্ধনী ({}) এর মধ্যে পরিবর্তনশীল নাম বা অভিব্যক্তি অন্তর্ভুক্ত করুন।
খেলোয়াড় ='Roger_Federer'country ='Legend'titles =20print(f"আউটপুট \n *** টেনিস খেলোয়াড় {player} {country} থেকে {titles} খেতাব জিতেছিল ")print(f" *** আমি আশা করি {player} আরও একটি {টাইটেল - 10} টাইটেল জিতবে
আউটপুট
*** কিংবদন্তি থেকে টেনিস খেলোয়াড় রজার_ফেদেরার 20টি শিরোপা জিতেছিলেন*** আমি আশা করি রজার_ফেদেরার আরও 10টি শিরোপা জিতবেন**এখন যেহেতু আমরা বেসিকগুলি কভার করেছি, আসুন কিছু রিয়েল টাইম সমস্যা এবং কেন আমি ফর্ম্যাট করা স্ট্রিংগুলি ব্যবহার শুরু করার পরামর্শ দিই৷
শিরোনাম =[('ফেদেরার', 20),('নাদাল', 20),('জোকোভিক', 17),]প্রিন্ট('আউটপুট\n') i, (খেলোয়াড়, শিরোনাম) গণনাতে( শিরোনাম):মুদ্রণ('#%d:%-10s =%d' % (i + 1,player.title(), round(titles)))আউটপুট
#0:ফেদেরার =20#1:নাদাল =20#2:জোকোভিচ =17স্পষ্টতই, হাই আপে রিপোর্ট পাঠানোর সময় সূচকটি ০ থেকে শুরু হওয়া দেখতে চায় না, তারা 1 এ শুরু করতে চেয়েছিল। রজার ফেদেরার টেনিসের কিংবদন্তি হওয়ার কারণে, আমি ব্যক্তিগতভাবে তাকে #0 এর পরিবর্তে #1 হিসাবে উপস্থাপন করতে চেয়েছিলাম।
এখন সেই পরিবর্তন করতে, দেখুন কিভাবে পুরানো ফরম্যাট ব্যবহার করার সময় কোডের পঠন-ক্ষমতা পরিবর্তন হয়।
শিরোনাম =[('ফেদেরার', 20),('নাদাল', 20),('জোকোভিক', 17),]প্রিন্ট('আউটপুট\n') i, (খেলোয়াড়, শিরোনাম) গণনাতে( শিরোনাম):মুদ্রণ('#%d:%-10s =%d' % (i + 1,player.title(), round(titles)))আউটপুট
#1:ফেদেরার =20#2:নাদাল =20#3:জোকোভিচ =17উপসংহারে, কেন f-স্ট্রিংগুলি পরিচালনা করা আরও সহজ তা দেখানোর জন্য আমি একটি উদাহরণ দিয়েছি।
old_school_formatting =(' টেনিস লেজেং হল %(খেলোয়াড়), '' %(খেলোয়াড়) %(খেতাব) জিতেছে, ''এবং সে দেশের %(দেশ)s।')old_formatted =old_school_formatting % {'player':'Roger Federer', 'titles':20, 'country':'Swiss',}print('Output\n' + old_formatted)আউটপুট
টেনিস লেজেং হলেন রজার ফেদেরার, রজার ফেদেরার ২০টি শিরোপা জিতেছিলেন এবং তিনি সুইস দেশ থেকে এসেছেন।
new_formatting =(' টেনিস লেজেং হল {খেলোয়াড়}, '' {খেলোয়াড়} {titles} শিরোপা জিতেছিল, ''এবং সে দেশের {country}') new_formatted =new_formatting.format(player='Roger Federer) ', শিরোনাম=20, দেশ='সুইস',)মুদ্রণ('আউটপুট\n' + নতুন_ফরম্যাটেড)আউটপুট
টেনিস লেজেং হলেন রজার ফেদেরার, রজার ফেদেরার ২০টি শিরোপা জিতেছেন, এবং তিনি সুইস দেশ থেকে এসেছেনএই স্টাইলটি কিছুটা কম কোলাহলপূর্ণ কারণ এটি অভিধানে কিছু উদ্ধৃতি বাদ দেয় এবং ফরম্যাট স্পেসিফায়ারে বেশ কয়েকটি অক্ষর, কিন্তু এটি খুব কমই বাধ্যতামূলক।