我试图在一个新的应用程序中使用从这里学到的语法。我试图解析结果时出错。我相信我对这个JSON响应有些误解,因为相同的语法在其他应用程序上也可以正常工作
典型反应如下-
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)
错误-
location_lat': results['lat'],
TypeError: string indices must be integers
但是,当我按照@Padraic的建议
lat = outputs[0]["results"][0]["geometry"]["location"]['lat']
lng = outputs[0]["results"][0]["geometry"]["location"]['lng']
print(lat,lng)
我得到了正确的值。你知道吗
(-3.2923144, 36.8250274)
迭代结果时我做错了什么?你知道吗
这是你的名字打印.pprint(结果)输出:
for循环statement'for geometry in results['results'][0]['geometry']'只获取下面dict的键值
所以位置信息应该如下
它是
results[0][0]["results"]
,在一个列表中有一个列表。你知道吗所以:
最大值:
如果访问方式不对,您可以简单地:
results[0][0]["results"][0]["geometry"]
的输出是dict:当您在
results[0][0]["results"][0]["geometry"]
上迭代时,实际上是在dict中的键上进行迭代,因此您试图使用一个字符串来索引一个字符串,因此出现了错误。你知道吗因此-在上面的会话“Error”上粘贴的一行中有一个Python文本表达式-
['results']
在该行中是硬编码列表中的硬编码字符串,而不是对已解码的先前数据的引用。表达式从['results']
中获取第[0]
个元素,即字符串'results'
,并尝试从该元素中选取['geometry']
元素。你知道吗尝试:
相反
相关问题 更多 >
编程相关推荐