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

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

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


当前回答

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

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

或者使用异常处理:

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

其他回答

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

floatInInt = int(float(floatInString))

你对这句话有问题:

while file_to_read != " ":

这不会找到空字符串。它找到一个由一个空格组成的字符串。想必这不是你要找的。

听取别人的建议。这不是非常地道的python代码,如果直接遍历文件,就会清楚得多,但我认为这个问题也值得注意。

错误消息意味着提供给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的参数。检查它是否为空或包含alpha字符。如果它包含字符,那么就忽略这部分。

我对这个问题的简单解决方法是将我的代码包装在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)