1

我有一个数字,我想格式化为具有零填充和特定长度的字符串。假设如果固定长度是 22 ,我知道我可以这样做

 format(variable,"%022d")

但是有什么办法可以做到这一点

length = 22
format(variable,"%0lengthd")

这意味着我需要在% variable d表达式中使用变量

谢谢

4

3 回答 3

4

是的,通过在内部使用字符串格式:

length = 22
format(variable,"%0{}d".format(length))

事实上,你可以通过一次调用来完成这一切str.format()

length = 22
"{0:{1}}".format(variable, length)
于 2013-09-14T02:40:00.320 回答
4

您应该str(variable).zfill(length)为此使用:

>>> str(12345).zfill(8)
'00012345'
>>> str(12345).zfill(10)
'0000012345'

在填充零之前必须将数字转换为字符串似乎有些不直观,但是(至少在我看来)这比使用多种格式要干净得多。毕竟,既然解决方案已经内置,为什么还要拼凑解决方案呢?

于 2013-09-14T02:45:50.860 回答
3

甚至经典的字符串插值也支持这一点:

>>> variable = 100
>>> length = 22
>>> print "%0*d" % (length,variable)
0000000000000000000100

在这个答案中查看更多详细信息:variable length of %s with the % operator in python

于 2013-09-14T03:05:28.030 回答