我从我的代码中得到这个错误:
ValueError: invalid literal for int() with base 10: ''.
这是什么意思?为什么会发生这种情况,我该如何解决呢?
我从我的代码中得到这个错误:
ValueError: invalid literal for int() with base 10: ''.
这是什么意思?为什么会发生这种情况,我该如何解决呢?
当前回答
我最近遇到了一个案例,这些答案都不管用。我遇到的CSV数据中混合了空字节,这些空字节没有被剥离。所以,我的数字字符串,剥离后,由这样的字节组成:
\x00\x31\x00\x0d\x00
为了解决这个问题,我做了:
countStr = fields[3].replace('\x00', '').strip()
count = int(countStr)
...其中fields是分隔行产生的CSV值列表。
其他回答
错误消息意味着提供给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
Int不能将空字符串转换为整数。如果输入字符串可以是空的,考虑检查这种情况:
if data:
as_int = int(data)
else:
# do something else
或者使用异常处理:
try:
as_int = int(data)
except ValueError:
# do something else
这似乎读数有时是一个空字符串,显然会出现错误。 你可以在你的while循环的int(读数)命令之前添加一个额外的检查,比如:
while readings != 0 or readings != '':
readings = int(readings)
给定floatInString = '5.0',该值可以像这样转换为int:
floatInInt = int(float(floatInString))
因为这一行,你的答案是抛出错误
readings = int(readings)
在这里,您试图将字符串转换为int类型,而不是以10为基数。你只能将一个以10为基数的字符串转换为int,否则它将抛出ValueError,声明以10为基数的int()的无效字面量。