我正在努力寻找一种更快捷的方式来找到最接近的Latitude&来自一个大型文件的Lat / Longs列表中的经度,我必须打开一个csv文件,将其转换为正确的格式。选择我的lat和long所在的列,然后将它们插入我的eqation ...如果它有效。 这就是我到目前为止......我一直在
TypeError:
float
对象不可订阅
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)
答案 0 :(得分:1)
reader = data.readlines()
将文件的所有行读入字符串列表。
这些行:
for line in reader:
lat1 = line[4]
将lat1
分配给每行的第5个字符......但它会循环到最后一行,导致lat1
成为文件中最后一行的第5个字符...可能不是你想要什么。
这似乎甚至不是为您提供错误消息的代码,因为给定输入文件这一行:
lat1[ix][5]=int(long2[ix][5])
由于lat1
是单个字符,因此应该给出:
IndexError: string index out of range
long2
是先前分配的浮点值,因此对其进行索引也会失败。
使用实际来源,示例输入和错误消息的完整回溯更新您的问题,以获得更好的帮助。
还有一个csv模块可以帮助处理.csv
个文件,但仍需要一些示例输入。
另外,我建议使用调试器或至少一些打印语句来查看变量的作用。