在python中如何将单个数字转换为双位数字符串?

时间:2010-08-17 18:46:48

标签: python string numbers digits

所以说我有

a = 5

我想将其打印为字符串'05'

11 个答案:

答案 0 :(得分:70)

print "%02d"%a是python 2变体

python 3使用了一个更冗长的格式化系统:

"{0:0=2d}".format(a)

python2的相关文档链接是:http://docs.python.org/2/library/string.html#format-specification-mini-language

对于python3,它是http://docs.python.org/3/library/string.html#string-formatting

答案 1 :(得分:17)

a = 5
print '%02d' % a
# output: 05

当与左侧的字符串一起使用时,'%'运算符被称为string formatting运算符。 '%d'是打印出整数的格式代码(如果值不是数字,则会出现类型错误)。使用'%2d,您可以指定长度,'%02d'可用于将填充字符设置为0而不是默认空间。

答案 2 :(得分:13)

>>> print '{0}'.format('5'.zfill(2))
05

了解更多here

答案 3 :(得分:4)

>>> a=["%02d" % x for x in range(24)]
>>> a
['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23']
>>> 

就是这么简单

答案 4 :(得分:3)

在 Python 3.6 中,您可以使用所谓的 f 字符串。在我看来,这种方法更易于阅读。

>>> f'{a:02d}'
'05'

答案 5 :(得分:1)

在Python3中,您可以:

print("%02d" % a)

答案 6 :(得分:0)

摆脱Mohommad的回答:

str_years = [x for x in range(24)]
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]

#Or, if you're starting with ints:
int_years = [int(x) for x in str_years]

#Formatted here
form_years = ["%02d" % x for x in int_years]

print(form_years)
#['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23']

答案 7 :(得分:0)

df["col_name"].str.rjust(4,'0')#(length of string,'value') --> ValueXXX --> 0XXX  
df["col_name"].str.ljust(4,'0')#(length of string,'value') --> XXXValue --> XXX0

答案 8 :(得分:0)

如果您是分析师而不是专业人士,这可能会更直观:

[(str('00000') + str(i))[-5:] for i in arange(100)]

分解,您:

  • 首先创建一个重复0或X(在本例中为100长)的列表,即arange(100)

  • 将所需的数字添加到字符串中,在这种情况下,为数字0-99,即'i'

  • 仅保留右手5位数字,即“ [-5:]”用于子设置

  • 输出为编号列表,全部为5位数字

答案 9 :(得分:0)

这是一个愚蠢的解决方案,但是上面的其他解决方案却出现类型错误。所以,如果其他所有方法都失败了,yolo:

images3digit = []

for i in images:
        if len(i)==1:
            i = '00'+i
            images3digit.append(i)
        elif len(i)==2:
            i = '0'+i
            images3digit.append(i)
        elif len(i)==3:
            images3digit.append(i)

答案 10 :(得分:0)

根据@ user225312的说法,您可以使用.zfill()将paddng添加到转换为字符串的数字中。

我的方法是将数字保留为数字,直到要转换为字符串的那一刻为止:

>>> num = 11
>>> padding = 3
>>> print(str(num).zfill(padding))
011