我使用字典格式化字符串:
print '%(duration)s' % {'duration':'898'}
一切都按预期工作。现在我想确保%(持续时间)的替换将在左侧填充零,因此它有5位数。结果应如下所示:' 00898''保证持续时间永远不会超过5位数。
'%(duration)s'
怎么样?
答案 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