关于python:带前导零的显示数字

Display number with leading zeros

鉴于:

1
2
3
a = 1
b = 10
c = 100

对于所有小于两位数的数字,如何显示前导零?

也就是说,

1
2
3
01
10
100

您可以使用str.zfill

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

印刷品:

1
2
3
01
10
100


在Python2中,您可以执行以下操作:

1
print"%02d" % (1,)

基本上,%类似于printfsprintf

对于python 3.+可以通过以下方式实现相同的行为:

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

对于python 3.6+,使用f字符串可以实现相同的行为:

1
print(f"{1:02d}")


在python 2.6+和3.0+中,您将使用format()字符串方法:

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

或者使用内置的(对于单个数字):

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

有关新的格式化功能,请参阅PEP-3101文档。


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

印刷品:

1
2
3
01
10
100


或者:

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


在python>=3.6中,您可以使用通过以下方法引入的新f字符串来简洁地完成此操作:

1
f'{val:02}'

打印名为val的变量,fill值为02width

对于您的特定示例,您可以在循环中很好地做到这一点:

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

哪些印刷品:

1
2
3
01
10
100

有关F字符串的更多信息,请参阅介绍它们的PEP498。


1
2
3
x = [1, 10, 100]
for i in x:
    print '%02d' % i

结果:

1
2
3
01
10
100

阅读文档中有关使用%设置字符串格式的详细信息。


做这件事的方法:

1
str(number).rjust(string_width, fill_char)

这样,如果原始字符串的长度大于字符串宽度,则返回的字符串不变。例子:

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

结果:

1
2
3
01
10
100


或其他解决方案。

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


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

例如:

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

1
2
3
4
width = 5
num = 3
formatted = (width - len(str(num))) *"0" + str(num)
print formatted


用途:

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

或使用math模块:

1
2
import math
'00'[math.ceil(math.log(i, 10)):] + str(i)

我就是这样做的:

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

基本上,zfill取你想要添加的前导零的个数,所以很容易取最大的个数,把它变成一个字符串并得到长度,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
Python 3.6.5 (default, May 11 2018, 04:00:52)
[GCC 8.1.0] on linux
Type"help","copyright","credits" or"license" for more information.
>>> total = 100
>>> print(str(1).zfill(len(str(total))))
001
>>> total = 1000
>>> print(str(1).zfill(len(str(total))))
0001
>>> total = 10000
>>> print(str(1).zfill(len(str(total))))
00001
>>>


!/usr/bin/env python3号

版权所有2009-2017 BHG http://bw.org/

1
2
3
4
5
6
x = 5

while (x <= 15):
    a =  str("{:04}".format(x))
    print(a)
    x = x + 1;

与图像相同的代码


根据你的建议,我让我的工作发挥作用。谢谢您。

1
2
3
4
5
6
7
8
def number2binlist(number, leading = 8):
    #Convert Binary to 0/1 list array with leading zeros, default 8
    bin2dec = int(str(bin(number))[2:])
    theformat ="{:0"+str(leading)+"d}"
    dec2str = list(theformat.format(bin2dec))
    output = [int(z) for z in dec2str]
    output.reverse()
    return output


1
2
3
s=1    
s="%02d"%s    
print(s)

结果是01


如果处理的是一个或两个数字:

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