我从我的代码中得到这个错误:
ValueError: invalid literal for int() with base 10: ''.
这是什么意思?为什么会发生这种情况,我该如何解决呢?
我从我的代码中得到这个错误:
ValueError: invalid literal for int() with base 10: ''.
这是什么意思?为什么会发生这种情况,我该如何解决呢?
当前回答
你对这句话有问题:
while file_to_read != " ":
这不会找到空字符串。它找到一个由一个空格组成的字符串。想必这不是你要找的。
听取别人的建议。这不是非常地道的python代码,如果直接遍历文件,就会清楚得多,但我认为这个问题也值得注意。
其他回答
原因是你得到了一个空字符串或者一个字符串作为int的参数。检查它是否为空或包含alpha字符。如果它包含字符,那么就忽略这部分。
另一个答案,以防以上所有的解决方案都不适合你。
我的原始错误类似于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
我对这个问题的简单解决方法是将我的代码包装在if语句中,利用空字符串不是“真”的事实:
给定这两个输入中的任意一个:
input_string = "" # works with an empty string
input_string = "25" # or a number inside a string
你可以使用这个检查安全地处理一个空白字符串:
if input_string:
number = int(input_string)
else:
number = None # (or number = 0 if you prefer)
print(number)
因为这一行,你的答案是抛出错误
readings = int(readings)
在这里,您试图将字符串转换为int类型,而不是以10为基数。你只能将一个以10为基数的字符串转换为int,否则它将抛出ValueError,声明以10为基数的int()的无效字面量。