如何用Python中的字符串格式化布尔值?

时间:2010-02-13 22:02:12

标签: python boolean string-formatting

我看到我做不到:

"%b %b" % (True, False)
在Python中

。我猜测%b为b(oolean)。有这样的事吗?

4 个答案:

答案 0 :(得分:215)

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

这不是特定于布尔值 - %r调用参数上的__repr__方法。 %s(对于str)也应该有用。

答案 1 :(得分:58)

如果您想True False使用:

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

因为str(True)'True'str(False)'False'

或者如果您希望1 0使用:

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

因为int(True)1int(False)0

答案 2 :(得分:14)

您也可以使用Formatter class字符串

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)不可用。有关详细信息,请参阅Format Specification Mini-Language

答案 3 :(得分:6)

要针对Python-3更新此功能,您可以

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

但是,如果您想实际格式化字符串(例如,添加空格),则会遇到Python将布尔值转换为基础C值(即int)的情况,例如

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

要解决此问题,您可以将True转换为字符串,例如

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