如何在Python中控制string.format(bool_value)结果的长度?

时间:2016-04-12 12:25:35

标签: python string formatting

用于将布尔值转换为字符串的str.format函数的等效方法是什么?

>>> "%5s" % True
' True'

>>> "%5s" % False
'False'

请注意' True'中的空格。这总是使得长度相同的真实'并且'错误'。

我已经检查了这篇文章中的方法:

How are booleans formatted in Strings in Python?

他们都不能做同样的事情。

4 个答案:

答案 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_valueTrue还是False

当然,您可以根据需要更改长度或对齐方向。例如。 "{:6}".format(str(True))输出'True '

答案 3 :(得分:0)

不确定我是否理解正确,但如果某个变量x导致True或False,则可以编写str(x);如果不是这样的话,抱歉只是尝试以更详细的方式解释Q