在python中拆分数字串

Splitting strings of numbers in python

本问题已经有最佳答案,请猛点这里访问。

当我试图用"0"拆分一个数字字符串时,它给出了一个错误的输出。

1
2
3
4
for x in str(0123):
    print x
8
3

但是如果没有0,它是正确的。

1
2
3
4
5
6
for x in str(1234):
    print x
1
2
3
4

有人能帮忙吗?


当您输入数字0123时,它将作为一个整数输入。整数没有内置前导零,因此在由str()函数转换为字符串之前,它将自身减少到123

所以你的程序看到的是str(123),而不是str(0123)

您可以通过使用引号而不是str()将数字变为字符串来解决此问题:

1
2
for x in"0123":
    print x

编辑:根据一条评论,我意识到我的解释有错误。尽管整数没有内置前导零,但在python 2中实际上有一个行为会做一些不同的事情。

带前导零的整数是Python中的八进制数。所以当你把0123放进去的时候,str()并不像我说的那样看到123,它实际上是看到1*8^2+2*8+3 = 83,转换str(83),这就是你得到的输出。

不管怎样,用引号结束数字仍然可以得到你想要的,只是原因和我想的不同。