显示数字的前导零

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 字符串实现相同的行为:

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

您可以使用str.zfill

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

印刷品:

01
10
100

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

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

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

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

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

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

印刷品:

01
10
100

或这个:

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

Python> = 3.6 中 ,您可以使用以下命令引入的新 f 字符串来简洁地执行此操作:

f'{val:02}'

它将打印名称为valfill值为0width2的变量。

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

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

打印:

01 
10
100

有关 f 弦的更多信息,请查看引入它们的PEP 498

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

结果是:

01
10
100

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

执行此操作的 Pythonic 方法:

str(number).rjust(string_width, fill_char)

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

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

结果:

01
10
100

或其他解决方案。

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

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

例如:

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