首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从嵌套json提取数据时的Python错误

从嵌套json提取数据时的Python错误
EN

Stack Overflow用户
提问于 2019-02-05 09:21:19
回答 1查看 93关注 0票数 1

我在论坛上找不到类似于python的json结构的解决方案,所以请求新的帮助。

我正在尝试从名为geolocation.json的文件中提取纬度和经度的值,该文件具有以下结构

代码语言:javascript
复制
{"userId":"Geo-data","data": {"mocked":false,"timestamp":1548173963281,"coords":{"speed":0,"heading":0,"accuracy":20.20400047302246,"longitude":88.4048656,"altitude":0,"latitude":22.5757344}}}

我正在尝试下面的代码从文件中提取最后一个数据的纬度和经度,并将其传递给googleAPI进行反向地理编码。

代码语言:javascript
复制
import json
with open("geolocation.json") as geo_file:

   geo_dict = [json.loads(line) for line in geo_file]

for geo in geo_dict:
    last_loc= geo_dict[-1]

    geolat= str(last_loc['latitude'])
    geolong= str(last_loc['longitude'])

    #geolat = format(float(geo['latitude']),'.6f')
    #geolong = format(float(geo['longitude']),'.6f')


from geopy.geocoders import GoogleV3
#geolat='22.5757344'
#geolong='88.4048656'
latlong = [geolat, geolong]
val = ", ".join(latlong)
geolocator = GoogleV3(api_key='My_API_KEY')
locations = geolocator.reverse(val)
if locations:
    print(locations[0].address)

如果我硬编码纬度和经度,而不是从文件中提取它们(删除整个json方面),代码就能工作。所以问题正在解决,我得到的错误是--

代码语言:javascript
复制
geolat= str(last_loc['latitude'])
KeyError: 'latitude'

以我有限的Python知识,我被困住了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-05 12:02:12

你有一本嵌套字典。使用last_loc["data"]["coords"]

Ex:

代码语言:javascript
复制
import json
last_loc = json.loads('{"userId":"Geo-data","data": {"mocked":false,"timestamp":1548173963281,"coords":{"speed":0,"heading":0,"accuracy":20.20400047302246,"longitude":88.4048656,"altitude":0,"latitude":22.5757344}}}')
geolat= str(last_loc["data"]["coords"]['latitude'])
geolong= str(last_loc["data"]["coords"]['longitude'])
print(geolat)
print(geolong)

输出:

代码语言:javascript
复制
22.5757344
88.4048656
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54531079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档