【问题标题】:Invalid literal for int() Pythonint() Python 的无效文字
【发布时间】:2013-09-27 08:04:32
【问题描述】:

我在 Python 中得到了 int() 的无效文字,但这真的很奇怪,因为文字是“1”。当然,如果我在 IPython int("1") 或 int(u"1") 中尝试,我没有错误,但在我自己的代码中,相同的指令会出错。

        try:
            VimsLog().debug("val = %s" % val)
            int(val)
        except Exception, e:
            VimsLog().debug(e)
            VimsLog().debug("I am died")
            return val

在哪里

e=invalid literal for int(): "1"

出于兼容性考虑,我使用的是 Python 2.4

【问题讨论】:

  • 这个“val”从何而来?
  • 试试VimsLog().debug("val = %r" % val)。记录了什么?
  • “val”可能有一个字符串表示“1”,但它不能转换为整数。 int(str(val)) 有效吗?
  • 您是否剪切并粘贴了错误消息?
  • 尝试repr(val)dir(val) 以获取更多信息。

标签: python string int


【解决方案1】:

repr(val)u'"1"'

这意味着您不是在转换 1,而是在尝试转换 "1"(即字符串引号,1,引号)。这不是一个有效的整数文字。

去掉引号:

int(val.strip('"'))

【讨论】:

  • 也许可以,但这也会删除字符串中的引号,这可能会导致无效输入被忽略:"1""2" 12
  • 好的,那我采纳你的方案,非常感谢你的解释!
【解决方案2】:

我已经尝试了所有上面的解决方案,但它只是不起作用。 相反,对我来说它有效:

val = "15.1234"
int(float(str(val)))

结果

>>15

【讨论】:

    猜你喜欢
    • 2015-04-23
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多