在Python中拆分数字字符串

27 浏览
0 Comments

在Python中拆分数字字符串

当我尝试用\'0\'来分割一串数字时,它给出了错误的输出。\n

for x in str(0123):
    print x
8
3

\n但如果没有0,就是正确的。\n

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

\n有人可以帮忙解决这个问题吗?

0
0 Comments

问题出现的原因是当输入数字0123时,它被作为整数处理。整数没有内置的前导零,因此在被str()函数转换为字符串之前,它会将自己减少为123

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

你可以通过使用引号将数字变为字符串来解决这个问题,而不是使用str()函数:

for x in "0123":
    print x

编辑:根据评论,我意识到我的解释有一个错误。虽然关于整数没有内置的前导零这一点是正确的,但Python 2中实际上有一个不同的行为。

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

无论如何,用引号括起来的数字仍然可以得到你想要的结果,只是原因与我想的不同。

0