【问题标题】:Splitting strings of numbers in python [duplicate]在python中拆分数字字符串[重复]
【发布时间】:2018-07-27 23:44:36
【问题描述】:

当我尝试用“0”分割一串数字时,它给了我一个错误的输出。

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

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

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

有人可以帮忙吗?

【问题讨论】:

  • str 中使用' 'for x in str('0123'):
  • 当你在 Python 2 中运行它时,数字 0123 被视为八进制数并解析为 83 (eval('0123') == 83)

标签: string python-2.7 int


【解决方案1】:

当您输入数字0123 时,它会以整数形式输入。整数没有内置的前导零,因此在被str() 函数转换为字符串之前,它会将自身缩减为123

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

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

for x in "0123":
    print x

编辑:根据评论,我意识到我的解释有误。尽管关于整数没有内置前导零的内容,但实际上 Python 2 中有一种行为会有所不同。

以零开头的整数是octal numbers in python。所以当你输入0123 时,str() 不像我说的那样看到123,它实际上看到了1*8^2+2*8+3 = 83,并转换了str(83),这就是你得到的输出。

不管怎样,用引号括起来的数字仍然可以得到你想要的,只是出于与我想的不同的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-12
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    相关资源
    最近更新 更多