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

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

其他回答

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

floatInInt = int(float(floatInString))

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

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

你对这句话有问题:

while file_to_read != " ":

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

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

我最近遇到了一个案例,这些答案都不管用。我遇到的CSV数据中混合了空字节,这些空字节没有被剥离。所以,我的数字字符串,剥离后,由这样的字节组成:

\x00\x31\x00\x0d\x00

为了解决这个问题,我做了:

countStr = fields[3].replace('\x00', '').strip()
count = int(countStr)

...其中fields是分隔行产生的CSV值列表。

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