如何解决使用 Python 在 json 字符串中查找信息
我尝试通过 Google Geocoding API 查找地址的纬度和经度。
我使用以下代码获得了 json 字符串:
address = "the Empire State Building"
api_key = " " #not shown here
url = "https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s" % (address,api_key)
response = requests.get(url)
response_data = response.json()
字典response_data
如下所示。
{'results': [{'address_components': [{'long_name': '20','short_name': '20','types': ['street_number']},{'long_name': 'West 34th Street','short_name': 'W 34th St','types': ['route']},{'long_name': 'Manhattan','short_name': 'Manhattan','types': ['political','sublocality','sublocality_level_1']},{'long_name': 'New York','short_name': 'New York','types': ['locality','political']},{'long_name': 'New York County','short_name': 'New York County','types': ['administrative_area_level_2','short_name': 'NY','types': ['administrative_area_level_1',{'long_name': 'United States','short_name': 'US','types': ['country',{'long_name': '10001','short_name': '10001','types': ['postal_code']}],'formatted_address': '20 W 34th St,New York,NY 10001,USA','geometry': {'location': {'lat': 40.7484405,'lng': -73.98566439999999},'location_type': 'ROOFTOP','viewport': {'northeast': {'lat': 40.7497894802915,'lng': -73.98431541970848},'southwest': {'lat': 40.7470915197085,'lng': -73.98701338029149}}},'place_id': 'ChIJaXQRs6lZwokRY6EFpJnhNNE','plus_code': {'compound_code': 'P2X7+9P New York,NY,'global_code': '87G8P2X7+9P'},'types': ['establishment','museum','point_of_interest','tourist_attraction']}],'status': 'OK'}
我应该怎么做才能获得该地址的纬度和经度?
解决方法
当您运行 print(type(response_data))
时,它返回 dict
?
如果是 dict
类,则可以使用 dict
方法....
不幸的是,您想要的值在字典中的字典中的字典中的字典中的列表中。
长话短说,试试
latlong = response_data['results'][0]['geometry']['location']
print(latlong)
更长的解释: “response_data”是一个字典,有 2 个键(您的信息存储在“结果”中)。 'results' 的值是一个列表,1 个条目(您的信息位于索引 0)。 索引 0 处的值是一个 dict,有 6 个键(您的信息位于 key = 'geometry')。 'geometry' 的值是一个字典,有 3 个条目(您的信息位于关键的 'location' 处)。 'location' 的值是一个字典,2 个条目(您的信息!!!'lat'、'lng')。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。