IndexError: list index out of range : error even after the list isn't

IndexError: list index out of range : error even after the list isn't

我收到列表索引超出范围的错误,即使它不是。我也附上了我的 CSV 图片。

name=[]
value=[]
readFile=open('CsvMat.csv','r').read()
eachline=readFile.split('\n')


for line in eachline:
    split=line.split(',')
    name.append(split[0])
    value.append(split[1])

pos= arange(len(name))+.5
barh(pos,value,align='center',color='#b8ff5c')
yticks(pos,name)
show()

这里有两种可能:

  1. 你有一行没有逗号。 split 将是一个只有一个元素的列表。
  2. 你有一个空行。 split 是一个空列表。

无论哪种方式,您都必须防范这种情况,也许可以使用:

if len(splits) < 2:
    continue

跳过这些行。

您正在阅读 CSV 文件;您可能希望避免重新发明 CSV 阅读轮并在此处使用 csv module

import csv

names = []
values = []
with open('CsvMat.csv', 'r', newline='') as readfile:
    for name, value, *remainder in csv.reader(readfile):
        names.append(name)
        values.append(float(value))

请注意,我将 name 重命名为 names,将 value 重命名为 values,以反映这些是列表。我还将这些值转换为浮点数,以便在绘图中使用;如果它们是整数,则将 float() 替换为 int().