我试图找到一种更快的方法来从一个巨大的文件中的纬度/经度列表中找到最接近的纬度和经度匹配,我必须打开一个 csv 文件,将其转换为正确的格式。选择我的纬度和经度所在的列,然后将它们插入我的方程......如果它有效的话。 这就是我到目前为止所拥有的......我不断得到
TypeError:
float
object is not subscriptable
def menu3(data):
lat2 = 47.488611
long2 = -117.578611
data = open('eqdata.csv', 'r')
reader = data.readlines()
for line in reader:
lat1 = line[4]
for line in reader:
long1 = line[5]
for ix in range(len(long1)):
lat1[ix][5]=int(long2[ix][5])
for ix in range(len(lat1)):
lat1[ix][4]=int(lat1[ix][4])
distance =int((lat2-lat1)**2)**.5+int((long2-long1)**2)
distanceSq = distance**2
print (distanceSq)
最佳答案
reader = data.readlines()
将文件的所有行读取到字符串列表中。
这些行:
for line in reader:
lat1 = line[4]
将lat1
分配给每行的第5个字符...但它会循环直到最后一行,导致lat1
成为最后一行的第5个字 rune 件...可能不是您想要的。
这似乎不是给您提供错误消息的代码,因为给定输入文件这一行:
lat1[ix][5]=int(long2[ix][5])
由于 lat1
是单个字符,因此应该给出:
IndexError: string index out of range
long2
是之前分配的浮点值,因此索引它也会失败。
使用实际来源、示例输入和错误消息的完整回溯来更新您的问题,以获得更好的帮助。
还有一个csv帮助处理 .csv
文件的模块,但仍然需要一些示例输入。
我还建议使用调试器,或者至少使用一些打印语句,来查看变量正在做什么。
关于python - 在纬度/经度 python 列表中查找最接近的纬度和经度匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17006360/