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

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

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


当前回答

我正在创建一个程序,读取 文件和if文件的第一行 是不是空白,它读下四个 行。计算在 这些线,然后下一条线是 阅读。

像这样的东西应该工作:

for line in infile:
    next_lines = []
    if line.strip():
        for i in xrange(4):
            try:
                next_lines.append(infile.next())
            except StopIteration:
                break
    # Do your calculation with "4 lines" here

其他回答

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

我的原始错误类似于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")

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

Python会将数字转换为浮点数。简单地先调用float,然后将其转换为int类型就可以了: 输出= int(float(input))

当您必须将空格分隔的整数映射到一个列表,但您使用.input()逐行输入整数时,也会发生这种情况。 例如,我在HackerRank Bon-Appetit上解决这个问题,在编译时得到了以下错误

因此,不要逐行向程序输入,而是尝试使用map()方法将空格分隔的整数映射到列表中。

这似乎读数有时是一个空字符串,显然会出现错误。 你可以在你的while循环的int(读数)命令之前添加一个额外的检查,比如:

while readings != 0 or readings != '':
    readings = int(readings)