问题:布尔在Python中如何格式化为字符串?
我看到我做不到:
"%b %b" % (True, False)
在Python中。我猜%b
是b(oolean)。有这样的东西吗?
回答 0
>>> print "%r, %r" % (True, False)
True, False
这不是特定于布尔值的- 在参数上%r
调用__repr__
方法。 %s
(对于str
)也应该起作用。
回答 1
如果要True False
使用:
"%s %s" % (True, False)
因为str(True)
是'True'
和str(False)
是'False'
。
或者如果您想1 0
使用:
"%i %i" % (True, False)
因为int(True)
是1
和int(False)
是0
。
回答 2
您也可以使用字符串的Formatter类
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
某些%
-format类型说明符(%r
,%i
)不可用。有关详细信息,请参见格式规范迷你语言
回答 3
要针对Python-3更新此代码,您可以执行此操作
"{} {}".format(True, False)
但是,如果要实际格式化字符串(例如,添加空格),则会遇到Python将布尔值强制转换为基础C值(即int)的情况,例如
>>> "{:<8} {}".format(True, False)
'1 False'
为了解决这个问题,您可以将True
其转换为字符串,例如
>>> "{:<8} {}".format(str(True), False)
'True False'