如何从0000循环到9999并将数字转换为相对字符串?

时间:2012-03-02 04:29:58

标签: python string numbers

我想得到一些字符串,范围从0000到9999,也就是说,我想打印以下字符串:

0000
0001
0002
0003
0004
0005
0006
....
9999

我尝试使用print "\n".join([str(num) for num in range(0, 9999)]),但失败了,我得到以下号码:

0
1
2
3
4
5
6
...
9999

我希望python自动添加前缀 0 ,使数字保持 4位数 所有时间。任何人都可以帮助我吗?任何帮助表示感谢。

8 个答案:

答案 0 :(得分:20)

获得所需内容的一种方法是使用字符串格式:

>>> for i in range(10):
...     '{0:04}'.format(i)
... 
'0000'
'0001'
'0002'
'0003'
'0004'
'0005'
'0006'
'0007'
'0008'
'0009'

所以要做你想做的事,做到这一点:

print "\n".join(['{0:04}'.format(num) for num in range(0, 10000)])

答案 1 :(得分:5)

试试这个

print"\n".join(["%#04d" % num for num in range(0, 9999)])

答案 2 :(得分:5)

只需使用str.rjust

print "\n".join([str(num).rjust(4, '0') for num in range(0, 1000)])
  

以长度为一的字符串返回右对齐的字符串。填充   使用指定的fillchar完成(默认为ASCII空间)。该   如果width小于或等于len(s),则返回原始字符串。

答案 3 :(得分:5)

http://docs.python.org/library/stdtypes.html#str.zfill

  

返回以长度字符串填充零的数字字符串   宽度。正确处理符号前缀。原始字符串是   如果width小于或等于len(s),则返回。

E.g:

>>> for i in range(10):
...   print('{:d}'.format(i).zfill(4))
... 
0000
0001
0002
0003
0004
0005
0006
0007
0008
0009

答案 4 :(得分:2)

str.zfill也有效:

print('\n'.join([str(num).zfill(4) for num in range(0, 10000)]))

答案 5 :(得分:0)

另一种方法:

DEBUG:__main__:Add called
5

["%.4d" % i for i in range(0,999)]

答案 6 :(得分:0)

这应该起到将字符串左填充的技巧:

(lambda f: f(f))(lambda f: (lambda x: (x if len(x) == 4 else f(f)('0' + x))))(str(num))

答案 7 :(得分:0)

你可以试试这个:

for i in range(9999):
    print(str(i).zfill(4)+"\n")