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

Dan*_*lik 17 python string-formatting

所以我知道"%02d to %02d"%(i, j)在Python中将零填充ij.

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

我知道我可以使用zfill,但我希望我能用格式字符串完成整个事情.

Mar*_*ers 32

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

'{number:0{width}d}'.format(width=2, number=4)
Run Code Online (Sandbox Code Playgroud)

演示:

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

str.format()格式规范允许多次通过,其中替换的字段可以在参数填写格式规范.

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

'{:02d}'.format(4)
Run Code Online (Sandbox Code Playgroud)

要么

'{number:02d}'.format(number=4)
Run Code Online (Sandbox Code Playgroud)

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

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

'%0*d' % (width, number)
Run Code Online (Sandbox Code Playgroud)

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

  • @albert 它的工作方式与使用 f 字符串完全相同。给定 `number, width = 4, 2`,`f"{number:0{width}d}"` 会生成 `'04'`。 (5认同)