回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图在一个新的应用程序中使用从这里学到的语法。我试图解析结果时出错。我相信我对这个JSON响应有些误解,因为相同的语法在其他应用程序上也可以正常工作</p>
<p>典型反应如下-</p>
<pre><code>outputs =
[[{u'results': [{u'address_components': [{u'long_name': u'Arumeru',
u'short_name': u'Arumeru',
u'types': [u'administrative_area_level_2',
u'political']},
{u'long_name': u'Arusha',
u'short_name': u'Arusha',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'Tanzania',
u'short_name': u'TZ',
u'types': [u'country',
u'political']}],
u'formatted_address': u'Arumeru, Tanzania',
u'geometry': {u'bounds': {u'northeast': {u'lat': -2.9567556,
u'lng': 37.0479585},
u'southwest': {u'lat': -3.7703911,
u'lng': 36.541356}},
u'location': {u'lat': -3.2923144,
u'lng': 36.8250274},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': -2.9567556,
u'lng': 37.0479585},
u'southwest': {u'lat': -3.7703911,
u'lng': 36.541356}}},
u'types': [u'administrative_area_level_2', u'political']}],
u'status': u'OK'}]]
output = open('geocoding_results_Tanzania.csv', 'w+')
writer = csv.DictWriter(output, delimiter=',', fieldnames=['location_lat', 'location_lng'])
writer.writeheader()
pprint([results])
for results in outputs[0]["results"][0]["geometry"]["location"]:
params = {
'location_lat': results['lat'],
'location_lng': results['lng'],
}
writer.writerow(params)
</code></pre>
<p>错误-</p>
<pre><code> location_lat': results['lat'],
TypeError: string indices must be integers
</code></pre>
<p>但是,当我按照@Padraic的建议</p>
<pre><code>lat = outputs[0]["results"][0]["geometry"]["location"]['lat']
lng = outputs[0]["results"][0]["geometry"]["location"]['lng']
print(lat,lng)
</code></pre>
<p>我得到了正确的值。你知道吗</p>
<pre><code>(-3.2923144, 36.8250274)
</code></pre>
<p>迭代结果时我做错了什么?你知道吗</p>