0

我正在尝试读取一个包含几千行和 3 列数据的 CSV 文件。我成功地阅读了第一列和第二列,但是当我尝试阅读第三列时,我得到了一个超出范围的错误。换句话说:

row=0
rowMax = len(AudioAngle)
while row < rowMax:
    print (AudioAngle[row][0])
    print (AudioAngle[row][1])
    row=row+1

工作和当我添加时

print (AudioAngle[row][2])

事情只工作到第 274 行。
查看我的 CSV 文件,我在该行看到了这个。

00:09.0    0    0
00:09.0    0    0
00:09.0    0    0
00:09.1             <--- line 274
00:09.1    0    0
00:09.1    0    0
00:09.2    0    0

该代码对第二列中的空白没有问题,但在第三列中引发错误。

为什么当我尝试通读它时,第三列会向我抛出一个超出范围的索引错误?

4

2 回答 2

2

解析器可能只使用空格作为分隔符 - 因此第一列和第二列以及第二列和第三列之间的空间可以被视为将第一个单元格与第二列中的空单元格分开。要摆脱错误,只需检查子列表长度!(请使用 for 循环...)

for row in AudioAngle:
    print(row[0])
    print(row[1])
    if len(row) >= 3:
       print(row[2])
于 2013-08-21T17:32:58.940 回答
0

由于 [1] 和 [2] 不存在,因此您将在 274 行上获得超出范围的索引是有道理的。

如果您的数据可能存在也可能不存在,如第 274 行的情况,您需要在尝试使用它之前检查它是否存在:

if (AudioAngle[row][0]):
    print (AudioAngle[row][0])
于 2013-08-21T17:35:56.413 回答