【问题标题】:Python Error in extracting data from nested json从嵌套json中提取数据时出现Python错误
【发布时间】:2019-02-05 09:21:19
【问题描述】:

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

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

{"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 以进行反向地理编码。

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 方面),则该代码有效。所以问题出在提取中。我得到的错误是--

geolat= str(last_loc['latitude'])
KeyError: 'latitude'

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

【问题讨论】:

    标签: json python-2.7 geolocation multi-layer


    【解决方案1】:

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

    例如:

    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)
    

    输出:

    22.5757344
    88.4048656
    

    【讨论】:

      猜你喜欢
      • 2021-02-08
      • 2020-06-28
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 2018-03-19
      • 2019-11-18
      • 1970-01-01
      • 2022-07-12
      相关资源
      最近更新 更多