Python中的字符串如何格式化布尔值?
Posted
技术标签:
【中文标题】Python中的字符串如何格式化布尔值?【英文标题】:How are booleans formatted in Strings in Python? 【发布时间】:2011-01-16 14:01:11 【问题描述】:我知道我做不到:
"%b %b" % (True, False)
在 Python 中。我猜%b
是 b(oolean)。有这样的吗?
【问题讨论】:
你想要的结果是什么?真假?那你想要'%s'。 %b,当它存在时,用于二进制(如在 base-2 中)。 嘿,是的! “%s”似乎工作得很好。回答这个问题并得到一个选择的答案。我曾经做过“%s”% str(False)。真丢脸:) 相关文档链接:docs.python.org/library/… 【参考方案1】:参考Python string interpolation
在 Python 3.6 中,字符串插值被添加了一个新的字符串字面量 f 前缀
shouldBeTrue = True
print(f"shouldBeTrue=shouldBeTrue")
【讨论】:
【参考方案2】:要为 Python-3 更新这个,你可以这样做
" ".format(True, False)
但是,如果您想实际格式化字符串(例如添加空格),您会遇到 Python 将布尔值转换为底层 C 值(即 int),例如
>>> ":<8 ".format(True, False)
'1 False'
要解决这个问题,您可以将True
转换为字符串,例如
>>> ":<8 ".format(str(True), False)
'True False'
【讨论】:
【参考方案3】:你也可以使用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
【讨论】:
请注意添加格式选项can screw this up. E.g.:_^5
会得到你 '__1__'
除非你 str(...)
布尔值。
你可以get around!s
这样的类型转换问题:'!s:_^5'.format(True)
是'True_'
【参考方案4】:
如果你想True False
使用:
"%s %s" % (True, False)
因为str(True)
是'True'
而str(False)
是'False'
。
或者如果你想1 0
使用:
"%i %i" % (True, False)
因为int(True)
是1
而int(False)
是0
。
【讨论】:
【参考方案5】:>>> print "%r, %r" % (True, False)
True, False
这并不特定于布尔值 - %r
在参数上调用 __repr__
方法。 %s
(对于str
)也应该可以工作。
【讨论】:
%r
和%s
的主要区别是什么?
我一直有这个区别,但如果我错了,请纠正我。 %s(因此 str())旨在为人类尽可能透明地表示对象。 %r(因此 repr())旨在为 python 尽可能透明地表示对象。例如,print(str("foo"))
仅在新行上打印 foo
。 print(repr("foo"))
但是在新行上打印 'foo'
,包括引号,因为这是您需要在 python 解释器中键入的内容,以获取 python 中参数的相应对象。以上是关于Python中的字符串如何格式化布尔值?的主要内容,如果未能解决你的问题,请参考以下文章