我有以下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()
会回来
['name,x,y']
因此,唯一可用的索引是0
.
我相信您要做的是用逗号分隔每个字符串,如果是这种情况:
f.readline().split(',')
会这样做。
代码f.readline()
返回一个字符串,拆分它返回从 readline(( 函数获得的唯一字符串的列表。
例:
f=open('property.csv', "r")
f.readline()
lines = f.readline().split()
print(lines)
输出: ['10001000,104,普特南,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])
请注意:这是索引超出范围的错误,因为代码试图访问只有一个元素作为字符串的列表的第 2 个元素。