Tôi thấy tôi không thể làm:
"%b %b" % (True, False)
trong Python. Tôi đoán %bcho 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 %bcho 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 - %rgọi __repr__phương thức trên đối số. %s(cho str) cũng nên làm việc.
%rvà là %sgì?
print(str("foo"))chỉ in footrê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 Truethành một chuỗi, vd
>>> "{:<8} {}".format(str(True), False)
'True False'