mor*_*ris 5 python csv python-3.x
我在读取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*
Run Code Online (Sandbox Code Playgroud)
以下是代码的一部分.这是愚蠢的简单东西,但我只是空白它是如何工作的.我刚接触编码,但之前已经处理过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]
Run Code Online (Sandbox Code Playgroud)
Bur*_*lid 12
尝试检查空白行.另外,避免使用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]
Run Code Online (Sandbox Code Playgroud)
看起来你有一个空行或其他东西。默认情况下,for 循环的每次迭代都会从 csv 文件中抓取一行文本。该行文本以换行符结尾。因此,如果有一个空行,那么读者会将其读为类似 [] 的内容。
这样做你就会明白我的意思:
for row in reader:
print(repr(row))
some = row[1]
Run Code Online (Sandbox Code Playgroud)
您会发现打印的最后一行的长度不是 2 或更大。
您可以采取以下措施来解决此问题:
小智 6
这个问题很老了,但我遇到了一个稍微不同的解决方案来解决这个问题,所以我将它放在这里供其他可能遇到这个问题的人使用。我的文件太大了,我看不到它的结尾。最后有一行只有 2 个内容,而不是我的文件中典型的 5 个内容,因此当我尝试获取第四列时,它给了我这个错误。这是我的解决方案:
for row in reader:
if len(row) > 2:
array.append(row[3])
Run Code Online (Sandbox Code Playgroud)