显示带前导零的数字

鉴于。

a = 1
b = 10
c = 100

如何为所有少于两位数的数字显示前导零?

就是说。

01
10
100
解决办法

在Python 2中,你可以这样做。

print "%02d" % (1,)

基本上%就像printfsprintf


对于Python 3.+,同样的行为可以通过以下方式实现。

print("{:02d}".format(1))

对于Python 3.6+,同样的行为可以用f-strings来实现。

print(f"{1:02d}")
评论(7)

您可以使用[str.zfill][1]。

print str(1).zfill(2) 
print str(10).zfill(2) 
print str(100).zfill(2) 

版画。

01
10
100

[1]: https://docs.python.org/2/library/stdtypes.html#str.zfill

评论(1)

在Python 2.6+和3.0+中,你可以使用format()字符串方法。

for i in (1, 10, 100):
    print('{num:02d}'.format(num=i))

或使用内置的(单数)。

print(format(i, '02d'))

新的格式化功能请参见[PEP-3101][2]文档。

1:

[2]: http://www.python.org/dev/peps/pep-3101

评论(2)
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))

版画。

01
10
100
评论(2)

或者这样。

print '{0:02d}'.format(1)

评论(0)

Python >= 3.6中,你可以通过使用新的f-字符串来简洁地实现这一功能。

f'{val:02}'

打印变量名val,其fill值为0,[width][2]值为2

对于您的具体示例,您可以在一个循环中很好地完成这个操作。

a, b, c = 1, 10, 100
for val in [a, b, c]:
    print(f'{val:02}')

其中打印。

01 
10
100

关于f弦的更多信息,请看[PEP 498][3],那里介绍了f弦。

1:

[2]: https://docs.python.org/3/library/string.html#grammar-token-width [3]: https://www.python.org/dev/peps/pep-0498/

评论(0)
x = [1, 10, 100]
for i in x:
    print '%02d' % i

的结果。

01
10
100

阅读文档中更多关于使用%进行字符串格式化的信息

评论(1)

俾斯麦式的方法。

str(number).rjust(string_width, fill_char)

这样一来,如果原始字符串的长度大于string_width,就会被不变地返回。 例如:

a = [1, 10, 100]
for num in a:
    print str(num).rjust(2, '0')

}

a = [1, 10, 100]
for num in a:
    print str(num).rjust(2, '0')

结果:

01
10
100
01
10
100
评论(0)

或者另一种解决方案。

"{:0>2}".format(number)
评论(1)

使用一个格式字符串 - http://docs.python.org/lib/typesseq-strings.html

比如说。

python -c 'print "%(num)02d" % {"num":5}'
评论(0)

我就是这样做的。

str(1).zfill(len(str(total)))

基本上,zfill 是取你想要添加的前导零的数量,所以很容易取一个最大的数字,将它变成一个字符串,然后得到长度,就像这样。

Python 3.6.5 (默认,2018年5月11日,04:00:52)
linux上的[GCC 8.1.0]。
输入"帮助","版权","信用"。
或"许可证"。
获取更多信息。
>>>。
总计 = 100
>>>.zfill(len(str(total))
print(str(1).zfill(len(str(total))))
001
>>>
总计=1000
>>>.zfill(len(str(total))
print(str(1).zfill(len(str(total))))
0001
>>>
总计=10000
>>>.zfill(len(str(total))
print(str(1).zfill(len(str(total))))
00001
>>>。
评论(1)
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted
评论(0)

使用。

'00'[len(str(i)):] + str(i)

或者使用math模块。

import math
'00'[math.ceil(math.log(i, 10)):] + str(i)
评论(0)

df['Col1']=df['Col1'].apply(lambda x: '{0:0>5}'.format(x)) (5是总数字)

我用了这个链接。 http://www.datasciencemadesimple.com/add-leading-preceding-zeros-python/

评论(0)

如果处理的是一位或两位数的数字。

'0'+str(number)[-2:] or '0{0}'.format(number)[-2:]

评论(0)