在从嵌套JSON提取数据的Python错误

问题描述 投票:1回答:1

我找不到类似的论坛蟒蛇的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方面)的。所以,问题是extraction.I正在错误as--

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

用我有限的Python的知识,我坚持。

json python-2.7 geolocation multi-layer
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.