我从我的代码中得到这个错误:

ValueError: invalid literal for int() with base 10: ''.

这是什么意思?为什么会发生这种情况,我该如何解决呢?


当前回答

错误消息意味着提供给int的字符串不能被解析为整数。在:后面的部分显示了所提供的字符串。

在问题中描述的情况下,输入是一个空字符串,写为“。

下面是另一个例子——表示浮点值的字符串不能直接用int转换:

>>> int('55063.000000')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '55063.000000'

相反,先转换为float:

>>> int(float('55063.000000'))
55063

其他回答

另一个答案,以防以上所有的解决方案都不适合你。

我的原始错误类似于OP: ValueError: invalid literal for int() with base 10: '52,002'

然后,我尝试了接受的答案,得到了这个错误:ValueError:无法将字符串转换为浮动:' 52002 '——这是当我尝试int(float(variable_name))时

我的解决方案是将字符串转换为浮点数,并将其留在那里。我只是需要检查是否字符串是一个数值,这样我就可以正确地处理它。

try: 
   float(variable_name)
except ValueError:
   print("The value you entered was not a number, please enter a different number")

错误消息意味着提供给int的字符串不能被解析为整数。在:后面的部分显示了所提供的字符串。

在问题中描述的情况下,输入是一个空字符串,写为“。

下面是另一个例子——表示浮点值的字符串不能直接用int转换:

>>> int('55063.000000')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '55063.000000'

相反,先转换为float:

>>> int(float('55063.000000'))
55063

给定floatInString = '5.0',该值可以像这样转换为int:

floatInInt = int(float(floatInString))

因为这一行,你的答案是抛出错误

readings = int(readings)

在这里,您试图将字符串转换为int类型,而不是以10为基数。你只能将一个以10为基数的字符串转换为int,否则它将抛出ValueError,声明以10为基数的int()的无效字面量。

Int不能将空字符串转换为整数。如果输入字符串可以是空的,考虑检查这种情况:

if data:
    as_int = int(data)
else:
    # do something else

或者使用异常处理:

try:
    as_int = int(data)
except ValueError:
    # do something else