格式化字典中的替换

时间:2015-09-25 09:31:51

标签: python string dictionary formatting

我使用字典格式化字符串:

print '%(duration)s' % {'duration':'898'}

一切都按预期工作。现在我想确保%(持续时间)的替换将在左侧填充零,因此它有5位数。结果应如下所示:' 00898''保证持续时间永远不会超过5位数。

'%(duration)s'怎么样?

3 个答案:

答案 0 :(得分:3)

添加字段宽度,前导0;但是,使用数字:

print '%(duration)05d' % {'duration': 898}

请注意,我将值更改为整数,格式为d

您的总字段宽度(包括填充)为5个字符,0告诉字符串格式代码将零填充更短的数字。

如果无法转换为int,请切换到较新的str.format() method

print '{duration:0>5s}'.format(**{'duration':'898'})

0>部分告诉方法右对齐并使用0进行填充。有关详细信息,请参阅Format Specification Mini-Language documentation

演示:

>>> print '%(duration)05d' % {'duration': 898}
00898
>>> print '{duration:0>5s}'.format(**{'duration':'898'})
00898

答案 1 :(得分:3)

我更喜欢在这里使用str.format。示例 -

In [46]: "{duration:0>5}".format(duration='898')
Out[46]: '00898'

如果要使用字典,可以将字典解压缩到.format的参数中。示例 -

In [48]: "{duration:0>5}".format(**{'duration':'898'})
Out[48]: '00898'

在此主要部分是 - {duration:0>5} - 此处字段名称位于:之前,0>之后:表示通过填充{{1}进行右对齐}和0表示右对齐的空格量。

您可以找到有关string format syntax here

的更多信息

答案 2 :(得分:3)

您也可以使用zfill

  

str.zfill(width)

     

以长度为一的字符串返回左边填充零的数字字符串。

代码看起来像

>>> print '%(duration)s' % {'duration':'898'.zfill(5)}
00898