鉴于:
a = 1 b = 10 c = 100
如何为少于两位数的所有数字显示前导零?
那是,
01 10 100
Jack M... 912
在Python 2中,您可以:
print "%02d" % (1,)
基本上%就像printf
或sprintf
.
对于Python 3 +,可以通过以下方式实现相同的行为:
print("{:02d}".format(1))
对于Python 3.6+,使用f-strings可以实现相同的行为:
print(f"{1:02d}")
示例:为5位邮政编码打印"%05d"%result ['postalCode']. (8认同)
`x ="%02d.txt"%i`引发TypeError(不能连接'str'和'int'对象),但是`x ="%02d.txt"%(i,)`没有.有趣.我想知道在哪里记录 (2认同)
Datageek.. 863
你可以使用str.zfill
:
print str(1).zfill(2) print str(10).zfill(2) print str(100).zfill(2)
打印:
01 10 100
我喜欢这个解决方案,因为它不仅有助于输出数字,还有助于将其分配给变量...例如x = str(datetime.date.today().month).zfill(2)将返回x为feb月的'02'. (65认同)
Ber.. 358
在Python 2.6+和3.0+中,您将使用format()
字符串方法:
for i in (1, 10, 100): print('{num:02d}'.format(num=i))
或使用内置(对于单个数字):
print(format(i, '02d'))
有关新的格式化功能,请参阅PEP-3101文档.
在Python 2中,您可以:
print "%02d" % (1,)
基本上%就像printf
或sprintf
.
对于Python 3 +,可以通过以下方式实现相同的行为:
print("{:02d}".format(1))
对于Python 3.6+,使用f-strings可以实现相同的行为:
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}'
它打印用名称的变量val
具有fill
的值0
和width
的2
.
对于您的具体示例,您可以在循环中很好地执行此操作:
a, b, c = 1, 10, 100 for val in [a, b, c]: print(f'{val:02}')
打印:
01 10 100
有关f-strings的更多信息,请参阅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}'