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

73 投票
2 回答
42769 浏览
提问于 2025-04-18 08:50

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

格式规范迷你语言中提到了一个 width 参数:

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

但是,指定这个参数似乎只适用于填充,而不是截断:

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

所以这更像是一个最小宽度,而不是真正的宽度。

我知道可以对字符串进行切片,但我处理的数据是完全动态的,包括格式字符串和传入的参数。我不能直接去切片。

2 个回答

10

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

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

大小参数是用来设置填充大小的:

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

亚历克斯

112

使用 .precision 来代替:

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

根据 格式规范小语言 的说明:

精度是一个小数,表示在格式化为 'f''F' 的浮点数值时,小数点后应该显示多少位数字;而在格式化为 'g''G' 的浮点数值时,则表示小数点前后应该显示多少位数字。对于非数字类型,字段表示最大字段大小——换句话说,就是字段内容中将使用多少个字符。 对于整数值,不允许使用 精度

撰写回答