编写手机号追踪代码时触发KeyError: 'long'错误求助
错误原因
OpenCage Geocoding API返回的地理数据中,经度字段的键是lng而非long,你代码里使用了错误的键名,因此触发KeyError。
你可以查看之前print(results)的输出,会发现geometry对象的结构类似这样:
[ { "geometry": { "lat": 40.712776, "lng": -74.005974 }, # 其他返回字段... } ]
解决方法
直接将代码中的long替换为lng即可:
lat = results[0]["geometry"]["lat"] # 修正键名为lng long = results[0]["geometry"]["lng"]
额外注意事项
- 先校验
results是否为空:如果输入的location无效,geocoder.geocode(query)可能返回空列表,直接取results[0]会触发IndexError,建议增加判断逻辑:results = geocoder.geocode(query) if not results: print("无法获取该位置的地理数据") exit() # 再获取经纬度 lat = results[0]["geometry"]["lat"] lng = results[0]["geometry"]["lng"] - 确认API返回字段时,可参考OpenCage的官方返回结构定义,避免类似键名误用。
内容的提问来源于stack exchange,提问作者Emil
相关产品推荐
相关产品推荐

