列表中的索引超出范围

Index Out of Range in a List

我有以下 python 代码,它应该能够读取包含城市及其坐标的 .csv 文件。 .csv 文件的格式为:

name,x,y
name,x,y
name,x,y 

但是,我在第 764 行收到错误“列表索引超出范围”:

 758 """function to calculate the route for files in data folder with coordinates"""
 759 start_time = time.time()
 760 f = open(csv_name, "r")
 761 f.readline()
 762 f.readline()
 763 f.readline()
 764 lines = int(f.readline().split()[2])
 765 f.readline()
 766 f.readline()

该文件大约有 50 行。可能导致问题的原因是什么?谢谢!

如果程序正在读取的特定行不包含任何空格,则调用

f.readline().split()

将return

['name,x,y']

所以唯一可用的索引是 0

我相信您想做的是用逗号分隔每个字符串,如果是这样的话:

f.readline().split(',')

会做到这一点。

代码,f.readline() returns 一个字符串并将其拆分 returns 从 readline() 函数获得的唯一字符串的列表。

示例:

f=open('property.csv', "r")
f.readline()
lines = f.readline().split()
print(lines)

输出:['10001000,104,PUTNAM,Y,3,2,100']

此外,f.readline().split()[0] 会给出 10001000,104,PUTNAM,Y,3,2,100 作为字符串。 因此,f.readline().split() 将只有 1 个字符串类型的元素。要将字符串分隔到 csv 文件的列中,请使用 逗号 作为分隔符拆分字符串。在您的情况下,将第 764 行替换为以下内容:

lines=int(f.readline().split(',')[2])

请注意:这是索引超出范围错误,因为代码试图访问只有一个元素作为字符串的列表的第二个元素。