如何在Python中使用str.format截断字符串?

时间:2014-06-06 07:16:20

标签: python string string-formatting

如何在Python中使用str.format截断字符串?它甚至可能吗?

Format Specification Mini-Language中提到了width参数:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
...
width       ::=  integer
...

但是明确指定它只适用于填充,而不是截断:

>>> '{:5}'.format('aaa')
'aaa  '
>>> '{:5}'.format('aaabbbccc')
'aaabbbccc'

所以它实际上是宽度的最小宽度。

我知道我可以对字符串进行切片,但我在这里处理的数据是完全动态的,包括格式字符串和进入的args。我不能只是去明确切片。

2 个答案:

答案 0 :(得分:67)

改为使用.precision

>>> '{:5.5}'.format('aaabbbccc')
'aaabb'

根据Format Specification Mini-Language的文档:

  

precision 是一个十进制数,表示在使用'f''F'格式化的浮点值的小数点后应显示的位数,或之前和之后使用'g''G'格式化的浮点值的小数点。 对于非数字类型,该字段表示最大字段大小 - 换句话说,将使用字段内容中使用的字符数。 precision 不允许使用整数值

答案 1 :(得分:0)

您可以仅通过精度参数进行截断:

>>> '{:.1}'.format('aaabbbccc')
'a'

size 参数是设置填充的大小:

>>> '{:3}'.format('ab')
' ab'

亚历克斯