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()
这里有两种可能:
- 你有一行没有逗号。
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()
.
我收到列表索引超出范围的错误,即使它不是。我也附上了我的 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()
这里有两种可能:
- 你有一行没有逗号。
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()
.