บูลีนมีการจัดรูปแบบอย่างไรใน Strings in Python


170

ฉันเห็นว่าฉันทำไม่ได้:

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

ใน Python ฉันเดา%bสำหรับ b (oolean) มีอะไรแบบนี้เหรอ?


1
คุณต้องการให้ผลลัพธ์เป็นอย่างไร จริงและเท็จ? คุณต้องการ '% s' แล้ว % b เมื่อมีอยู่จะใช้สำหรับไบนารี (เช่นเดียวกับในฐาน 2)
Thomas Wouters

1
ใช่แล้ว! "% s" ทำงานได้ดี ตอบคำถามนี้และรับคำตอบที่ได้รับ ฉันเคยทำ "% s"% str (เท็จ) อัปยศในฉัน :)
Juanjo Conti

3
ลิงก์ไปยังเอกสารที่เกี่ยวข้อง: docs.python.org/library/…
mechanical_meat

คำตอบ:


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

นี่ไม่ใช่เฉพาะค่าบูลีน - %rเรียกใช้__repr__เมธอดบนอาร์กิวเมนต์ %s(สำหรับstr) ควรทำงานเช่นกัน


2
ความแตกต่างที่สำคัญระหว่าง%rและ%sคืออะไร
Alston

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(...)เป็น booleans
Michael - ที่ไหน Shirky Clay อยู่

2
คุณสามารถได้รับรอบปัญหาที่มีการแปลงชนิดเช่น!s: '{!s:_^5}'.format(True)เป็น'True_'
ไมเคิล - ที่ไหน Clay Shirky เป็น

4

ในการอัปเดตสิ่งนี้สำหรับ Python-3 คุณสามารถทำได้

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

อย่างไรก็ตามถ้าคุณต้องการฟอร์แมตสตริง (เช่นเพิ่ม white space) คุณจะพบ Python ที่หล่อบูลีนเข้าไปในค่า C พื้นฐาน (เช่น int)

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

หากต้องการหลีกเลี่ยงสิ่งนี้คุณสามารถTrueใช้เป็นสตริงได้เช่น

>>> "{:<8} {}".format(str(True), False)
'True     False'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.