在Python中,我如何将一个个位数转换为两位数的字符串?

100
所以说我有
a = 5

我想将它打印成字符串'05'

4
请阅读教程,特别是关于字符串格式化的部分。阅读完后,请更新你的问题。http://docs.python.org/library/stdtypes.html#string-formatting - S.Lott
11个回答

170
在Python 3.6中,引入了fstring或“格式化字符串字面值”机制。
f"{a:02}"

这个语法与下面的.format格式相当,但更加简洁。


Python 3在3.6之前更喜欢使用稍微冗长的格式化系统:

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

你可以在这里使用快捷方式,上面的可能是最冗长的变体。完整的文档在此处提供:http://docs.python.org/3/library/string.html#string-formatting

print "%02d"%a是Python 2的变体。

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


1
新的Python 3格式化在2.6中也可用,2.7/3允许您在位置参数方面更加简洁。 - Nick T
6
简单来说,"{:02d}".format(a)也可以运行!如果您想要4位数,只需将2替换为4即可"{:04d}".format(a)。这适用于Python3。 - nishant
无论正负,我该如何将数字转换为4位数?例如,-10应该变成-0010,而10则应该是0010。 - kabison33

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

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


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

这里阅读更多内容。


10
在Python 3.6中,您可以使用所谓的f-strings。在我看来,这种方法更易于阅读。
>>> f'{a:02d}'
'05'

10
>>> 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']
>>> 

这很简单


5
在Python3中,您可以:
print("%02d" % a)

5

根据@user225312所说,您可以使用.zfill()将转换为字符串的数字添加填充。

我的方法是在需要将其转换为字符串的时候才将数字保留为数字:

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

谢谢!这正是我正在寻找的。 - CodeSammich

1
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

1
分支脱离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']


0

如果你是一位分析师而不是全栈工程师,这可能更加直观:

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

将其分解,您需要:

  • 首先创建一个重复0或X的列表,这里是100个长度,即arange(100)

  • 将您想要的数字添加到字符串中,这里是数字0-99,即“i”

  • 仅保留右侧5位数字,即用于子集的“[-5:]”

  • 输出是带有5位数字的编号列表


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接