用于将布尔值转换为字符串的str.format
函数的等效方法是什么?
>>> "%5s" % True
' True'
>>> "%5s" % False
'False'
请注意' True'
中的空格。这总是使得长度相同的真实'并且'错误'。
我已经检查了这篇文章中的方法:
How are booleans formatted in Strings in Python?
他们都不能做同样的事情。
答案 0 :(得分:2)
您可以使用类型转换标记来执行您想要的操作:
'{:_>5}'.format(True) # Oh no! it's '____1'
'{!s:_>5}'.format(True) # Now we get '_True'
请注意!s
。我使用下划线来更清楚地显示填充。
6.1.3。 Format String Syntax
[...]
转换字段会在格式化之前导致类型强制。通常,格式化值的工作是通过值本身的
__format__()
方法完成的。但是,在某些情况下,最好强制将类型格式化为字符串,从而覆盖其自己的格式定义。通过在调用__format__()
之前将值转换为字符串,可以绕过正常的格式化逻辑。目前支持三种转换标记:
'!s'
调用值str()
,'!r'
调用repr()
,'!a'
调用ascii()
}。一些例子:
"Harold's a clever {0!s}" # Calls str() on the argument first "Bring out the holy {name!r}" # Calls repr() on the argument first "More {!a}" # Calls ascii() on the argument first
答案 1 :(得分:1)
您可以使用str()
功能。关于它的更多信息here。
以下是一些例子:
x = str(True)
y = False
print( type(x) )
<class 'str'> # This is a string
print( type(y) )
<class 'bool'> # This is a boolean
答案 2 :(得分:1)
我发现"{:>5}".format(str(True))
工作正常。
输出与"%5s" % True
完全相同,即' True'
。
所以"{:>5}".format(str(bool_value))
的长度总是5,无论bool_value
是True
还是False
。
当然,您可以根据需要更改长度或对齐方向。例如。 "{:6}".format(str(True))
输出'True '
。
答案 3 :(得分:0)
不确定我是否理解正确,但如果某个变量x导致True或False,则可以编写str(x);如果不是这样的话,抱歉只是尝试以更详细的方式解释Q