python中格式字符串的动态计算零填充

2024-04-25 17:42:36 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我知道Python中的"%02d to %02d"%(i, j)将零padij

但是,我想知道是否有任何方法可以在格式字符串中动态地对pad进行零填充(我有一个数字列表,我希望零填充大小等于列表中最长的数字)。

我知道我可以使用zfill,但我希望我可以用一个格式字符串来完成整个任务。


Tags: to方法字符串列表格式动态数字pad
2条回答

是的,有可能

>>> print "%0*d" % (5, 4)
00004
>>> print "%0*d" % (10, 4)
0000000004

请改用字符串格式化的str.format()方法:

'{number:0{width}d}'.format(width=2, number=4)

演示:

>>> '{number:0{width}d}'.format(width=2, number=4)
'04'
>>> '{number:0{width}d}'.format(width=8, number=4)
'00000004'

^{} formatting specification允许多次传递,替换字段可以填充格式化规范的参数。

在上面的示例中,硬编码的填充宽度规范如下所示:

'{:02d}'.format(4)

或者

'{number:02d}'.format(number=4)

使用命名参数。我只是用另一个替换字段替换了2宽度说明符。

要获得与旧样式%字符串格式相同的效果,您需要使用*宽度字符:

'%0*d' % (width, number)

但这只能用于值的元组(不支持字典格式),并且仅适用于字段宽度;格式中的其他参数不支持动态参数。

相关问题 更多 >