gpt4 book ai didi

python - 使用 Python 解析 JSON 文件 -> google map api

转载 作者:行者123 更新时间:2023-11-28 19:33:38 25 4
gpt4 key购买 nike

我正尝试在 Python 中开始使用 JSON,但似乎我误解了 JSON 概念中的某些内容。我关注了google api example ,效果很好。但是当我将代码更改为 JSON 响应中的较低级别时(如下所示,我尝试访问该位置),我收到以下代码的错误消息:

Traceback (most recent call last):
File "geoCode.py", line 11, in
<module>
test = json.dumps([s['location'] for s in jsonResponse['results']], indent=3) KeyError: 'location'

如何在 python 中访问 JSON 文件中较低级别的信息? 我是否必须转到更高级别并搜索结果字符串?这对我来说似乎很奇怪?

这是我尝试运行的代码:

import urllib, json
URL2 = "http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false"
googleResponse = urllib.urlopen(URL2);
jsonResponse = json.loads(googleResponse.read())
test = json.dumps([s['location'] for s in jsonResponse['results']], indent=3)
print test

最佳答案

理解jsonResponse格式的关键是把它打印出来:

import urllib, json
import pprint

URL2 = "http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false"

googleResponse = urllib.urlopen(URL2)
jsonResponse = json.loads(googleResponse.read())
pprint.pprint(jsonResponse)
# {u'results': [{u'address_components': [{u'long_name': u'1600',
# u'short_name': u'1600',
# u'types': [u'street_number']},
# {u'long_name': u'Amphitheatre Pkwy',
# u'short_name': u'Amphitheatre Pkwy',
# u'types': [u'route']},
# {u'long_name': u'Mountain View',
# u'short_name': u'Mountain View',
# u'types': [u'locality',
# u'political']},
# {u'long_name': u'San Jose',
# u'short_name': u'San Jose',
# u'types': [u'administrative_area_level_3',
# u'political']},
# {u'long_name': u'Santa Clara',
# u'short_name': u'Santa Clara',
# u'types': [u'administrative_area_level_2',
# u'political']},
# {u'long_name': u'California',
# u'short_name': u'CA',
# u'types': [u'administrative_area_level_1',
# u'political']},
# {u'long_name': u'United States',
# u'short_name': u'US',
# u'types': [u'country',
# u'political']},
# {u'long_name': u'94043',
# u'short_name': u'94043',
# u'types': [u'postal_code']}],
# u'formatted_address': u'1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA',
# u'geometry': {u'location': {u'lat': 37.4216227,
# u'lng': -122.0840263},
# u'location_type': u'ROOFTOP',
# u'viewport': {u'northeast': {u'lat': 37.424770299999999,
# u'lng': -122.0808787},
# u'southwest': {u'lat': 37.418475100000002,
# u'lng': -122.0871739}}},
# u'types': [u'street_address']}],
# u'status': u'OK'}

test = json.dumps([s['geometry']['location'] for s in jsonResponse['results']], indent=3)
print(test)
# [
# {
# "lat": 37.4216227,
# "lng": -122.0840263
# }
# ]
  1. jsonResponse 是一个字典。
  2. jsonResponse['results'] 是一个字典列表。
  3. 循环 for s in jsonResponse['results'] 赋值s 到每次迭代的字典通过循环。
  4. s['geometry'] 是一个字典。
  5. s['几何']['位置'](终于!)包含纬度/经度字典。

关于python - 使用 Python 解析 JSON 文件 -> google map api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4639311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com