当前位置:  开发笔记 > 编程语言 > 正文

显示前导零的数字

如何解决《显示前导零的数字》经验,为你挑选了10个好方法。

鉴于:

a = 1
b = 10
c = 100

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

那是,

01
10
100

Jack M... 912

在Python 2中,您可以:

print "%02d" % (1,)

基本上%就像printfsprintf.


对于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文档.



1> Jack M...:

在Python 2中,您可以:

print "%02d" % (1,)

基本上%就像printfsprintf.


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

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

对于Python 3.6+,使用f-strings可以实现相同的行为:

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


示例:为5位邮政编码打印"%05d"%result ['postalCode'].
`x ="%02d.txt"%i`引发TypeError(不能连接'str'和'int'对象),但是`x ="%02d.txt"%(i,)`没有.有趣.我想知道在哪里记录

2> Datageek..:

你可以使用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'.

3> Ber..:

在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.7.5.如果您不想使用命名参数,也可以使用"{:02d}".format(1).

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

打印:

01
10
100


仅与Python 3兼容.如果使用Python 2.7,请执行`print'{:02}'.format(1)`

5> 小智..:

或这个:

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



6> Jim Fasaraki..:

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

f'{val:02}'

它打印用名称的变量val具有fill的值0width2.

对于您的具体示例,您可以在循环中很好地执行此操作:

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

打印:

01 
10
100

有关f-strings的更多信息,请参阅PEP 498.



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

结果是:

01
10
100

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


文档示例很糟糕.他们使用前导零样本投射映射,因此除非您已经知道它是如何工作的,否则很难知道哪个是哪个.实际上,这就是把我带到这里的原因.

8> ZuLu..:

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



9> WinterChilly..:

或另一种解决方案

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


这将是Python方式,虽然为了清晰起见我会包含参数 - "{0:0> 2}".格式(数字)`,如果有人想要nLeadingZeros他们应该注意他们也可以这样做:``{0 :0> {1}}".format(number,nLeadingZeros + 1)`

10> Airsource Lt..:

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

例如:

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

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有