Tôi thấy tôi không thể làm:
"%b %b" % (True, False)
trong Python. Tôi đoán %b
cho b (oolean). Có một cái gì đó như thế này?
Tôi thấy tôi không thể làm:
"%b %b" % (True, False)
trong Python. Tôi đoán %b
cho b (oolean). Có một cái gì đó như thế này?
Câu trả lời:
>>> print "%r, %r" % (True, False)
True, False
Điều này không đặc trưng cho các giá trị boolean - %r
gọi __repr__
phương thức trên đối số. %s
(cho str
) cũng nên làm việc.
%r
và là %s
gì?
print(str("foo"))
chỉ in foo
trên một dòng mới. print(repr("foo"))
tuy nhiên in 'foo'
trên một dòng mới, bao gồm cả dấu ngoặc kép, vì đó là những gì bạn cần nhập vào trình thông dịch python để có được đối tượng tương ứng với đối số trong python.
Bạn cũng có thể sử dụng lớp Formatter của chuỗi
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);
Đây là những kết quả
True False
True False
1 0
1.000000 0.000000
1.000000e+00 0.000000e+00
Một số %
chỉ định loại -format ( %r
, %i
) không khả dụng. Để biết chi tiết, xem Đặc tả định dạng Mini-Language
{:_^5}
sẽ nhận được bạn '__1__'
trừ khi bạn str(...)
booleans.
!s
: '{!s:_^5}'.format(True)
là'True_'
Để cập nhật cái này cho Python-3, bạn có thể làm điều này
"{} {}".format(True, False)
Tuy nhiên, nếu bạn thực sự muốn định dạng chuỗi (ví dụ: thêm khoảng trắng), bạn bắt gặp Python chuyển boolean vào giá trị C bên dưới (ví dụ: int), vd
>>> "{:<8} {}".format(True, False)
'1 False'
Để giải quyết vấn đề này, bạn có thể tạo True
thành một chuỗi, vd
>>> "{:<8} {}".format(str(True), False)
'True False'