2010-02-13 7 views
120

मैं देख रहा हूँ मैं नहीं कर सकता:पायथन में स्ट्रिंग्स में बुलियन कैसे स्वरूपित होते हैं?

"%b %b" % (True, False) 
अजगर में

। मैंने बी (ओलेन) के लिए %b अनुमान लगाया। क्या ऐसा कुछ है?

+1

आप परिणाम क्या चाहते हैं? सही और गलत? आप तब '% s' चाहते हैं। % बी, जब यह मौजूद है, बाइनरी के लिए है (बेस -2 में)। –

+0

हो हाँ! "% s" बस ठीक काम करता प्रतीत होता है। इस सवाल का जवाब दें और एक व्याख्यान उत्तर प्राप्त करें। मैं "% s"% str (झूठी) करता था। मुझ पर शर्म आती है :) –

+3

प्रासंगिक दस्तावेज से लिंक: http://docs.python.org/library/stdtypes.html#string-formatting-operations – bernie

उत्तर

177
>>> print "%r, %r" % (True, False) 
True, False 

यह बूलियन मूल्यों के लिए विशिष्ट नहीं है - %r तर्क पर __repr__ प्रणाली को बुलाती है। %s (str के लिए) भी काम करना चाहिए।

+2

'% r' और'% s' के बीच बड़ा अंतर क्या है? – Stallman

+8

मुझे हमेशा इस विकृति को दिमाग में था, लेकिन अगर मैं गलत हूं तो मुझे सही करें। % s (और इस प्रकार str()) उद्देश्य के लिए मनुष्य के रूप में संभवतः वस्तु के रूप में प्रतिनिधित्व करने का लक्ष्य है। % r (और इस प्रकार repr()) उद्देश्य ऑब्जेक्ट को पाइथन के लिए यथासंभव पारदर्शी रूप से प्रस्तुत करना है। उदाहरण के लिए, 'प्रिंट (str ("foo"))' केवल एक नई पंक्ति पर प्रिंट 'foo'। 'प्रिंट (repr (" foo ")) हालांकि उद्धरण समेत एक नई पंक्ति पर 'foo'' प्रिंट करता है, क्योंकि पाइथन में तर्क के लिए संबंधित ऑब्जेक्ट प्राप्त करने के लिए आपको पाइथन दुभाषिया में टाइप करने की आवश्यकता होती है। – bobismijnnaam

50

आप True False उपयोग करना चाहते हैं:

"%s %s" % (True, False) 

क्योंकि str(True) है 'True' और str(False)'False' है।

या आप 1 0 उपयोग करना चाहते हैं:

"%i %i" % (True, False) 

क्योंकि int(True) है 1 और int(False)0 है।

8

तुम भी उपयोग कर सकते हैं स्ट्रिंग

print "{0} {1}".format(True, False); 
print "{0:} {1:}".format(True, False); 
print "{0:d} {1:d}".format(True, False); 
print "{0:f} {1:f}".format(True, False); 
print "{0:e} {1:e}".format(True, False); 

इन की Formatter class परिणाम

True False 
True False 
1 0 
1.000000 0.000000 
1.000000e+00 0.000000e+00 

% -format प्रकार विनिर्देशक में से कुछ (%r, %i) कर रहे हैं उपलब्ध हैं नहीं। विवरण के लिए Format Specification Mini-Language

+3

ध्यान दें कि फ़ॉर्मेटिंग विकल्प जोड़ना [इसे स्क्रू कर सकता है।] (Http://stackoverflow.com/q/36573222/241211) उदा। '{: _^5} 'आपको' __1 __ '' मिलेगा जब तक कि आप 'str (...)' बूलियन नहीं करते। – Michael

+2

आप [आस-पास] [https://stackoverflow.com/a/48326865/241211) टाइप कर सकते हैं जैसे '! S': '' {! S: _^5} 'प्रारूप (सत्य)' 'True_'' है – Michael

संबंधित मुद्दे