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

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

格式规格小型语言中提到了一个 width参数:

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

但明确指出这一点显然只适用于填充,而不适用于截断:

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

所以它实际上是一个最小宽度而不是宽度。

我知道我可以分割字符串,但是我在这里处理的数据是完全动态的,包括格式化字符串和进入的参数。我不能就这么直接切掉一个。

36886 次浏览

改为使用 .precision:

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

根据 格式规格小型语言的文件:

精确是一个十进制数字,指示用 'f''F'格式化的浮点数值的小数点后应显示多少位数字,或者用 'g''G'格式化的浮点数值的小数点前后应显示多少位数字。对于整数值,不允许使用 精确

你可以仅仅通过精度参数来截断:

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

Size 参数设置填充大小:

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

Alex