我看我做不到:
"%b %b" % (True, False)
在Python中,我猜%b代表B(olean),有这样的东西吗?
%b
n7taea2i1#
>>> print "%r, %r" % (True, False) True, False
这并不特定于布尔值-%r调用参数上的__repr__方法。%s(对于str)也应该有效。
%r
__repr__
%s
str
wgeznvg72#
如果要使用True False,请用途:
True False
"%s %s" % (True, False)
因为str(True)是'True'并且str(False)是'False'。或者如果您希望使用1 0,请使用:
str(True)
'True'
str(False)
'False'
1 0
"%i %i" % (True, False)
因为int(True)是1并且int(False)是0。
int(True)
1
int(False)
0
nwwlzxa73#
您还可以使用string的格式化程序类
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
i86rm4rw4#
要针对Python-3更新此设置,可以执行以下操作
"{} {}".format(True, False)
然而,如果你想实际格式化字符串(例如,添加白色),你会遇到Python将boolean强制转换为底层C值(例如,int),例如:
>>> "{:<8} {}".format(True, False) '1 False'
要解决这个问题,可以将True转换为字符串,例如:
True
>>> "{:<8} {}".format(str(True), False) 'True False'
nkkqxpd95#
要扩展the answer by phd,你可以在format()调用中不用str()-ing你的布尔值就可以完成所有这些操作,你可以利用some weird tricks来用新的字符串插值风格格式化布尔值,它也可以用于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'
14ifxucb6#
参考Python string interpolation在Python 3.6中,添加了字符串插值,并带有新的字符串常量f前缀
shouldBeTrue = True print(f"shouldBeTrue={shouldBeTrue}")
6条答案
按热度按时间n7taea2i1#
这并不特定于布尔值-
%r
调用参数上的__repr__
方法。%s
(对于str
)也应该有效。wgeznvg72#
如果要使用
True False
,请用途:因为
str(True)
是'True'
并且str(False)
是'False'
。或者如果您希望使用
1 0
,请使用:因为
int(True)
是1
并且int(False)
是0
。nwwlzxa73#
您还可以使用string的格式化程序类
这些是结果
某些
%
类型说明符(%r
、%i
)不可用。有关详细信息,请参阅格式规范迷你语言i86rm4rw4#
要针对Python-3更新此设置,可以执行以下操作
然而,如果你想实际格式化字符串(例如,添加白色),你会遇到Python将boolean强制转换为底层C值(例如,int),例如:
要解决这个问题,可以将
True
转换为字符串,例如:nkkqxpd95#
要扩展the answer by phd,你可以在
format()
调用中不用str()
-ing你的布尔值就可以完成所有这些操作,你可以利用some weird tricks来用新的字符串插值风格格式化布尔值,它也可以用于f字符串。平淡无奇的小事
添加一些格式将布尔值转换为整数
任何填充长度都会这样做。我不知道为什么有人会希望它这样工作。
字符串强制可以恢复正常文本
注意这里的
!s
,这是%s
最直接的等价形式,还有__repr__()
的!r
和ASCII的!a
,但它们对布尔型不是特别有意义。14ifxucb6#
参考Python string interpolation
在Python 3.6中,添加了字符串插值,并带有新的字符串常量f前缀