gpt4 book ai didi

python - 解析 JSON 错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:42 24 4
gpt4 key购买 nike

我正在尝试在一个新应用程序中使用我从这里学到的语法。当我尝试解析结果时出现错误。我相信我对这个 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)

迭代结果时我做错了什么?

最佳答案

它是 results[0][0]["results"],您在列表中有一个列表。

所以:

print(results[0][0]["results"][0]["geometry"])

手势:

{'location_type': 'APPROXIMATE', 'bounds': {'northeast': {'lat': -2.9567556, 'lng': 37.0479585}, 'southwest': {'lat': -3.7703911, 'lng': 36.541356}}, 'location': {'lat': -3.2923144, 'lng': 36.8250274}, 'viewport': {'northeast': {'lat': -2.9567556, 'lng': 37.0479585}, 'southwest': {'lat': -3.7703911, 'lng': 36.541356}}}

你访问的方式不对,你可以简单的:

loc = results[0][0]["results"][0]["geometry"]["location"]

lat, long = loc["lat"], loc["lng"]

print(lat,long)
-3.2923144 36.8250274

results[0][0]["results"][0]["geometry"] 的输出是一个字典:

{'viewport': {'northeast': {'lng': 37.0479585, 'lat': -2.9567556}, 'southwest': {'lng': 36.541356, 'lat': -3.7703911}}, 'location': {'lng': 36.8250274, 'lat': -3.2923144}, 'location_type': 'APPROXIMATE', 'bounds': {'northeast': {'lng': 37.0479585, 'lat': -2.9567556}, 'southwest': {'lng': 36.541356, 'lat': -3.7703911}}}

当您遍历 results[0][0]["results"][0]["geometry"] 时,您实际上是在遍历字典中的键,因此您正在尝试使用字符串索引字符串因此出现错误。

关于python - 解析 JSON 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28428938/

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