我知道我做不到:
"%b %b" % (True, False)
我用 b (oolean)来猜 %b。有这样的东西吗?
%b
如果你想使用 True False:
True False
"%s %s" % (True, False)
因为 str(True)是 'True' str(False)是 'False'。
str(True)
'True'
str(False)
'False'
或者如果你想使用 1 0:
1 0
"%i %i" % (True, False)
因为 int(True)是 1 int(False)是 0。
int(True)
1
int(False)
0
>>> print "%r, %r" % (True, False) True, False
这并不特定于布尔值-%r调用参数上的 __repr__方法。%s(对于 str)也应该起作用。
%r
__repr__
%s
str
也可以使用字符串的 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
一些 %格式的类型说明符(%r,%i)不可用
%
%i
为了在 Python-3中更新它,您可以这样做
"{} {}".format(True, False)
但是,如果您想实际格式化字符串(例如,添加空格) ,就会遇到 Python 将布尔值转换为底层 C 值(例如,int) ,例如。
>>> "{:<8} {}".format(True, False) '1 False'
要解决这个问题,可以将 True强制转换为字符串,例如。
True
>>> "{:<8} {}".format(str(True), False) 'True False'
指的是 Python 字符串插值
在 Python 3.6中,字符串插值添加了一个新的字符串文字 F前缀
shouldBeTrue = True print(f"shouldBeTrue={shouldBeTrue}")
要在 博士答案上展开,您可以做到所有这些,而无需在 format()调用中对布尔值进行 str()处理。有 一些奇怪的把戏,你可以利用做布尔型格式与新的字符串插值样式。它也适用于 f 字符串。
format()
str()
'{},{}'.format(True, False) # 'True,False' f'{True},{False}' # 'True,False'
任何填充长度都可以。
'{:0},{:0}'.format(True, False) # '1,0' f'{True:0},{False:0}' # '1,0' '{:>5},{:>5}'.format(True, False) # ' 1, 0' f'{True:>5},{False:>5}' # ' 1, 0'
注意这里的 !s。这是最直接的相当于 %s。对于 __repr__()也有 !r,对于 ASCII 也有 !a,但是对于布尔型它们并不特别有趣。
!s
__repr__()
!r
!a
'{!s:>5},{!s:>5}'.format(True, False) # ' True,False' f'{True!s:>5},{False!s:>5}' # ' True,False'