我在读取CSV文件时遇到此错误(无标题,3列,第2和第3个字符串):
Traceback (most recent call last):
File "C:\Python32\fantasy.py", line 72, in module>
some=row[1]
IndexError: list index out of range*
以下是代码的一部分。这是愚蠢的简单的东西,但我只是空白它是如何工作的。我刚接触编码,但之前已经处理过csv模块,并且从未遇到过这个部分的问题,只是在记事本中做了一些测试csv文件,看它是否会从相同的代码中读取,而且确实如此。我不知道。
import csv
##############some other code, working good and I believe not relevant to this problem
file=open(r"C:\Users\me\Desktop\file-2.csv","r")
reader=csv.reader(file, delimiter=',', quotechar='"')
for row in reader:
some=row[1]
答案 0 :(得分:8)
尝试检查空白行。另外,请避免使用file
作为变量名。 "r"
是打开的默认模式。
import csv
with open(r"C:\Users\me\Desktop\file-2.csv") as f:
reader = csv.reader(f, delimiter=',', quotechar='"')
for row in reader:
if row:
some=row[1]
答案 1 :(得分:3)
这个问题很旧,但是我遇到了一个稍微不同的解决方案,因此我将它放在这里给所有可能遇到此问题的人。我的文件太大了,看不到文件的结尾。最后,一行仅包含2项内容,而不是文件中通常的5项,因此当我尝试获取第四列时,它给了我这个错误。这是我的解决方案:
for row in reader:
if len(row) > 2:
array.append(row[3])
答案 2 :(得分:2)
看起来你有一个空行或什么的。默认情况下,for循环的每次迭代都会从csv文件中获取一行文本。该行文本以换行符结尾。因此,如果您有一个空白行,那么读者会将其读作类似[]的内容。
这样做,你会看到我的意思:
for row in reader:
print(repr(row))
some = row[1]
您会发现打印的最后一行不是2或更长。
你可以采取一些措施来解决这个问题:
答案 3 :(得分:0)
我之前也有此错误。我的问题很愚蠢,可以避免。我从另一个程序复制了一些代码,但没有更改定界符(在我的情况下是从管道更改为逗号),因此,当一个管道根本不存在时,查找一个管道当然超出了索引范围。