हम विभिन्न प्रारूपों का उपयोग करके डेटा मानों को स्ट्रिंग में इंटरपोलेट कर सकते हैं। हम इसका उपयोग कोड डीबग करने, रिपोर्ट, फॉर्म और अन्य आउटपुट बनाने के लिए कर सकते हैं। इस विषय में, हम स्ट्रिंग फ़ॉर्मेट करने के तीन तरीके देखेंगे और डेटा मानों को स्ट्रिंग में कैसे इंटरपोलेट करें।
पायथन में स्ट्रिंग फ़ॉर्मेट करने के तीन तरीके हैं:
- % - पुराना स्कूल (पायथन 2 और 3 में समर्थित)
- () - नई शैली (पायथन 2.6 और ऊपर)
- {} - f-स्ट्रिंग्स (पायथन 3.6 और ऊपर)
पुरानी शैली: %
स्ट्रिंग फ़ॉर्मेटिंग की पुरानी शैली का रूप format_string % data है। फॉर्मेट स्ट्रिंग्स इंटरपोलेशन अनुक्रमों के अलावा कुछ नहीं हैं।
| सिंटैक्स | विवरण |
|---|---|
| %s | स्ट्रिंग |
| %d | दशमलव |
| %x | हेक्सा-इंट |
| %o | ऑक्टल-इंट |
| %f | दशमलव-फ्लोट |
| %e | एक्सपोनेंशियल-फ्लोट |
| %g | दशमलव या एक्सपोनेंशियल-फ्लोट |
| %% | शाब्दिक % |
# % स्टाइल प्रकार के साथ पूर्णांक प्रिंट करना. 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. + का अर्थ राइट-अलाइन 2. - का अर्थ लेफ्ट-अलाइन 3. . का अर्थ मिनविड्थ और मैक्सचैर्स को अलग करना। 4. मिनविड्थ का अर्थ उपयोग करने के लिए न्यूनतम फ़ील्ड चौड़ाई 5. मैक्सचैर्स का अर्थ डेटा मान से प्रिंट करने के लिए कितने कैरेक्टर/अंक
player = 'Roger Federer' country = 'Legend' titles = 20 # कृपया ध्यान दें कि यह केवल पायथन 2 पर आज़माएं। यदि आप पायथन 3 पर चला रहे हैं तो नीचे दिए गए कमांड का आउटपुट बहुत भिन्न होगा। print('Output \n*** Tennis player %s From %s had won %d titles ' %(player,country,titles)) print('%s' % player) # player प्रिंट करें print('%5s' % player) # player का पहला नाम प्रिंट करें print('%-7s' % player) # player का अंतिम नाम प्रिंट करें print('%5.7s' % player) # 5 अग्रणी स्पेस के साथ player का अंतिम नाम
आउटपुट
*** Tennis player Roger Federer From Legend had won 20 titles Roger Federer Roger Federer Roger Federer Roger F
नई शैली: {} के साथ स्ट्रिंग और पूर्णांक इंटरपोलेशन
यदि आप पायथन 3.5 या उच्च संस्करण का उपयोग कर रहे हैं, तो आप नीचे वर्णित "नई शैली" फ़ॉर्मेटिंग का उपयोग कर सकते हैं।
"{}" फ़ॉर्मेटिंग का सिंटैक्स format_string.format(data) है।
याद रखें, format() फ़ंक्शन के आर्गुमेंट को फॉर्मेट स्ट्रिंग में {} प्लेसहोल्डर के क्रम में होना चाहिए। कभी-कभी अधिक पठनीयता के लिए आप 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)) # स्थितिजन्य आर्गुमेंट print(' *** Tennis player {1} From {2} had won {0} titles '.format(titles,player,country)) # नामित आर्गुमेंट print(' *** Tennis player {player} From {country} had won {titles} titles '.format(player = 'Roger Federer',country = 'Legend',titles = 20)) # डिक्शनरी आर्गुमेंट print(' *** Tennis player {player} From {country} had won {titles} titles '.format(player = 'Roger Federer',country = 'Legend',titles = 20)) # संरेखण बाएं '<' (डिफ़ॉल्ट) print(' *** Tennis player {} From {:<5s} had won {:<5d} titles '.format(player,country,titles)) # संरेखण बाएं '<' (डिफ़ॉल्ट) print(' *** Tennis player {} From {:<5s} had won {:<5d} titles '.format(player,country,titles)) # संरेखण केंद्र '^' print(' *** Tennis player {} From {:^10s} had won {:^10d} titles '.format(player,country,titles)) # संरेखण दाएं '>' 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-स्ट्रिंग्स पायथन 3.6 में आए, और जल्द ही स्ट्रिंग फ़ॉर्मेट करने का अनुशंसित तरीका बन गए। व्यक्तिगत रूप से मैं, इस फॉर्मेट का उपयोग करता हूं। f-स्ट्रिंग बनाने के लिए:
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
अब जब हमने मूल बातें कवर कर ली हैं, तो आइए कुछ वास्तविक समय की समस्या में जाएं और क्यों मैं f-स्ट्रिंग्स का उपयोग शुरू करने की सलाह देता हूं।
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
निष्कर्ष निकालने के लिए, मैंने एक उदाहरण प्रदान किया है जो दिखाता है कि f-स्ट्रिंग्स प्रबंधन में अधिक आसान क्यों हैं।
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
यह शैली थोड़ी कम शोर वाली है क्योंकि यह डिक्शनरी में कुछ कोट्स और फॉर्मेट स्पेसिफायर में काफी कुछ कैरेक्टर को खत्म कर देती है, लेकिन यह मुश्किल से मजबूर करती है।