如何在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。我不能只是去明确切片。
答案 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'
亚历克斯