पायथन में स्ट्रिंग्स में बूलियन को कैसे स्वरूपित किया जाता है?


170

मैं देखता हूं कि मैं ऐसा नहीं कर सकता:

"%b %b" % (True, False)

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


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

1
हो हाँ! "% s" बस ठीक काम करने लगता है। इस प्रश्न का उत्तर दें और एक उत्तर दें। मैं "% s"% str (गलत) करता था। मेरे लिए शर्म की बात है :)
जुआनजो कोंटी

3
प्रासंगिक प्रलेखन के लिए लिंक: docs.python.org/library/…
यांत्रिकी_

जवाबों:


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

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


2
%rऔर इसके बीच मुख्य अंतर क्या है %s?
अल्स्टन

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

66

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

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

इसलिये str(True) है 'True'और str(False)है 'False'

या यदि आप चाहते हैं 1 0 उपयोग हैं:

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

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


18

आप स्ट्रिंग के फॉर्मैटर क्लास का भी उपयोग कर सकते हैं

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);

ये परिणाम हैं

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

%-फॉर्म-टाइप टाइप के कुछ ( %r, %i) उपलब्ध नहीं हैं। विवरण के लिए प्रारूप विशिष्टता मिनी भाषा देखें


4
ध्यान दें कि स्वरूपण विकल्प जोड़ने से यह खराब हो सकता है। जब तक आप बूलियन्स नहीं {:_^5}मिलेंगे, '__1__'तब तक ईजी आपको मिल जाएगा str(...)
माइकल - कहाँ है क्ले शिर्क

2
आप कर सकते हैं चारों ओर पाने के प्रकार रूपांतरण के साथ समस्याओं की तरह !s: '{!s:_^5}'.format(True)है'True_'
माइकल - जहां क्ले है

4

पायथन -3 के लिए इसे अपडेट करने के लिए आप ऐसा कर सकते हैं

"{} {}".format(True, False)

हालाँकि, यदि आप वास्तव में स्ट्रिंग को प्रारूपित करना चाहते हैं (उदाहरण के लिए सफेद स्थान जोड़ें), तो आप पायथन को अंतर्निहित सी मान (यानी एक इंट) में बूलियन का मुकाबला करते हैं, उदा।

>>> "{:<8} {}".format(True, False)
'1        False'

इसके चारों ओर जाने के लिए आप Trueएक स्ट्रिंग के रूप में डाल सकते हैं , जैसे

>>> "{:<8} {}".format(str(True), False)
'True     False'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.