我得到列表索引超出范围错误,即使它不是。我也附上我的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()
答案 0 :(得分:0)
这里有两种可能性:
split
将只包含一个元素。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()
。