हम विभिन्न स्वरूपों का उपयोग करके डेटा मानों को स्ट्रिंग्स में इंटरपोलेट कर सकते हैं। हम इसका उपयोग कोड को कम करने, रिपोर्ट, फॉर्म और अन्य आउटपुट तैयार करने के लिए कर सकते हैं। इस विषय में, हम स्ट्रिंग्स को फ़ॉर्मेट करने के तीन तरीके देखेंगे और डेटा मानों को स्ट्रिंग्स में कैसे इंटरपोलेट करें।
पायथन में स्ट्रिंग्स को फ़ॉर्मेट करने के तीन तरीके हैं:
-
% - पुराना स्कूल (पायथन 2 और 3 में समर्थित)
-
() - नई शैली (पायथन 2.6 और ऊपर)
-
{} - एफ-स्ट्रिंग्स (पायथन 3.6 और ऊपर)
पुरानी शैली:%
स्ट्रिंग स्वरूपण की पुरानी शैली का स्वरूप format_string% डेटा है। प्रारूप तार कुछ और नहीं बल्कि प्रक्षेप अनुक्रम हैं।
वाक्यविन्यास वें> <वें शैली ="पाठ-संरेखण:केंद्र">विवरण वें> | |
---|---|
%s | स्ट्रिंग |
%d | दशमलव |
%x | hexa-int |
%o | octal-int |
%f | दशमलव-फ्लोट |
%e | exponential-float |
%g | दशमलव या घातांक-फ्लोट |
%% | शाब्दिक % |
# printing integer with % style type. print('output \nprinting a number in string format %s' % 42) print('printing a number in string decimal %d' % 42) print('printing a number in string hexa-int %x' % 42) print('printing a number in string exponential-float %g' % 42)
आउटपुट
printing a number in string format 42 printing a number in string decimal 42 printing a number in string hexa-int 2a printing a number in string exponential-float 42
स्ट्रिंग और पूर्णांक इंटरपोलेशन पुराने प्रारूप% के साथ
स्ट्रिंग के अंदर %s का अर्थ है एक स्ट्रिंग को इंटरपोलेट करना। स्ट्रिंग में % उपस्थिति की संख्या को स्ट्रिंग के बाद % के बाद डेटा आइटम्स की संख्या से मेल खाना चाहिए।
एक एकल डेटा आइटम उस अंतिम% के ठीक बाद करता है। एकाधिक डेटा को एक टुपल में समूहीकृत किया जाना चाहिए, नीचे उदाहरण देखें।
आप न्यूनतम और अधिकतम चौड़ाई, संरेखण, और वर्ण भरने को निर्दिष्ट करने के लिए % और प्रकार विनिर्देशक के बीच प्रारूप स्ट्रिंग में अन्य मान भी जोड़ सकते हैं।
1. + means right-align 2. - means left-align 3. . means separate minwidth and maxchars. 4. minwidth means mimimu field width to use 5. maxchars means how many characters/digits to print from the data value
player = 'Roger Federer' country = 'Legend' titles = 20 # note please try this only on Python 2. If you are running on Python3 output for below commands will vary a lot. print('Output \n*** Tennis player %s From %s had won %d titles ' %(player,country,titles)) print('%s' % player) # print player print('%5s' % player) # print firstname of player print('%-7s' % player) # Last Name of player print('%5.7s' % player) # Last Name of player with 5 leading spaces
आउटपुट
*** Tennis player Roger Federer From Legend had won 20 titles Roger Federer Roger Federer Roger Federer Roger F
नई शैली के साथ स्ट्रिंग और पूर्णांक इंटरपोलेशन:{}
यदि आप पायथन 3.5 या उच्चतर संस्करण का उपयोग कर रहे हैं, तो आप नीचे दिए गए अनुभाग में वर्णित "नई शैली" स्वरूपण का उपयोग कर सकते हैं।
“{}” फ़ॉर्मेटिंग का सिंटैक्स format_string.format (डेटा) है।
याद रखें, प्रारूप () फ़ंक्शन के तर्कों को प्रारूप स्ट्रिंग में {} प्लेसहोल्डर के रूप में क्रम में होना चाहिए। कभी-कभी अधिक पढ़ने की क्षमता के लिए आप डिक्शनेयर या प्रारूप में नामित तर्क पारित कर सकते हैं।
player = 'Roger Federer' player = 'Roger_Federer' country = 'Legend' titles = 20 print('Output \n{}'.format(player)) print(' *** Tennis player {} From {} had won {} titles '.format(player,country,titles)) # positonal arguments print(' *** Tennis player {1} From {2} had won {0} titles '.format(titles,player,country)) # named arguments print(' *** Tennis player {player} From {country} had won {titles} titles '.format(player = 'Roger Federer',country = 'Legend',titles = 20)) # Dictionary arguments print(' *** Tennis player {player} From {country} had won {titles} titles '.format(player = 'Roger Federer',country = 'Legend',titles = 20)) # alignment left '<' (default) print(' *** Tennis player {} From {:<5s} had won {:<5d} titles '.format(player,country,titles)) # alignment left '<' (default) print(' *** Tennis player {} From {:<5s} had won {:<5d} titles '.format(player,country,titles)) # alignment center '^' print(' *** Tennis player {} From {:^10s} had won {:^10d} titles '.format(player,country,titles)) # alignment right '>' print(' *** Tennis player {} From {:>10s} had won {:>10d} titles '.format(player,country,titles))जीते थे
आउटपुट
Roger_Federer *** Tennis player Roger_Federer From Legend had won 20 titles *** Tennis player Roger_Federer From Legend had won 20 titles *** Tennis player Roger Federer From Legend had won 20 titles *** Tennis player Roger Federer From Legend had won 20 titles *** Tennis player Roger_Federer From Legend had won 20 titles *** Tennis player Roger_Federer From Legend had won 20 titles *** Tennis player Roger_Federer From Legend had won 20 titles *** Tennis player Roger_Federer From Legend had won 20 titles
नवीनतम शैली के साथ स्ट्रिंग और पूर्णांक इंटरपोलेशन:f-स्ट्रिंग्स
f-strings Python 3.6 में दिखाई दिए, और जल्द ही स्ट्रिंग्स को फ़ॉर्मेट करने का अनुशंसित तरीका बन गया। व्यक्तिगत रूप से मैं, इस प्रारूप का उपयोग करता हूं। एफ-स्ट्रिंग बनाने के लिए:
1. आरंभिक/आरंभिक उद्धरण से पहले अक्षर f/F का प्रयोग करें।
2. स्ट्रिंग में उनके मान प्राप्त करने के लिए कर्ली ब्रैकेट्स ({}) में वैरिएबल नाम या एक्सप्रेशन शामिल करें।
player = 'Roger_Federer' country = 'Legend' titles = 20 print(f"Output \n *** Tennis player {player} From {country} had won {titles} titles ") print(f" *** I hope {player} wins another {titles - 10} titles ") print(f" {'*' * 3} Tennis player {player.upper()} From {country:.^10} had won {titles} titles")
आउटपुट
*** Tennis player Roger_Federer From Legend had won 20 titles *** I hope Roger_Federer wins another 10 titles *** Tennis player ROGER_FEDERER From ..Legend.. had won 20 titles
अब जब हमने बुनियादी बातों को कवर कर लिया है, तो आइए कुछ वास्तविक समय की समस्या पर जाएं और मैं फ़ॉर्मेट किए गए स्ट्रिंग्स का उपयोग शुरू करने की सलाह क्यों देता हूं।
titles = [ ('federer', 20), ('nadal', 20), ('djokovic', 17), ] print('Output\n') for i, (player, titles) in enumerate(titles): print('#%d: %-10s = %d' % ( i + 1, player.title(), round(titles)))
आउटपुट
#0: federer = 20 #1: nadal = 20 #2: djokovic = 17
जाहिर है, जब हायर अप को एक रिपोर्ट भेजना 0 से शुरू होने वाले इंडेक्स को नहीं देखना चाहता, तो वे 1 से शुरू करना चाहते थे। रोजर फेडरर टेनिस के एक दिग्गज होने के नाते, मैं व्यक्तिगत रूप से #0 के बजाय # 1 के रूप में उनका प्रतिनिधित्व करना चाहता था।पी>
अब उस परिवर्तन को करने के लिए, देखें कि पुराने प्रारूपों का उपयोग करते समय कोड की पढ़ने की क्षमता कैसे बदलती है।
titles = [ ('federer', 20), ('nadal', 20), ('djokovic', 17), ] print('Output\n') for i, (player, titles) in enumerate(titles): print('#%d: %-10s = %d' % ( i + 1, player.title(), round(titles)))
आउटपुट
#1: Federer = 20 #2: Nadal = 20 #3: Djokovic = 17
समाप्त करने के लिए, मैंने यह दिखाने के लिए एक उदाहरण प्रदान किया है कि एफ-स्ट्रिंग को प्रबंधित करना अधिक आसान क्यों है।
old_school_formatting = ( ' Tennis Legeng is %(player)s, ' ' %(player)s had won %(titles)s titles, ' 'and he is from the country %(country)s.') old_formatted = old_school_formatting % { 'player': 'Roger Federer', 'titles': 20, 'country': 'Swiss', } print('Output\n' + old_formatted)
आउटपुट
Tennis Legeng is Roger Federer, Roger Federer had won 20 titles, and he is from the country Swiss.
new_formatting = ( ' Tennis Legeng is {player}, ' ' {player} had won {titles} titles, ' 'and he is from the country {country}') new_formatted = new_formatting.format( player= 'Roger Federer', titles= 20, country= 'Swiss', ) print('Output\n' + new_formatted)
आउटपुट
Tennis Legeng is Roger Federer, Roger Federer had won 20 titles, and he is from the country Swiss
यह शैली थोड़ी कम शोर वाली है क्योंकि यह शब्दकोश . में कुछ उद्धरण हटा देती है और प्रारूप विनिर्देशकों में काफी कुछ वर्ण हैं, लेकिन यह शायद ही सम्मोहक है।