使用Python解析抛出JSON-字符串索引必须是整数
我试图用Python3解析json数据。 我的目标是从JSON中获取所有城市,并将它们添加到列表中:使用Python解析抛出JSON-字符串索引必须是整数,python,json,Python,Json,我试图用Python3解析json数据。 我的目标是从JSON中获取所有城市,并将它们添加到列表中: cities = [] for component in userdata['tagged_places']['data'][0]['place']['location']: cities.append(component['city']) Python向我返回以下错误: TypeError: string indices must be integers 这就是变量userdata
cities = []
for component in userdata['tagged_places']['data'][0]['place']['location']:
cities.append(component['city'])
Python向我返回以下错误:
TypeError: string indices must be integers
这就是变量userdata中的JSON:
{
'id':'1234',
'tagged_places':{
'data':{
'created_time':'2017-12-31T02:33:31+0000',
'id':'1234',
'place':{
'id':'455149097983173',
'location':{
'city':'Buenos Aires',
'country':'Argentina',
'latitude':-34.59537,
'longitude':-58.39196,
'street':'Rodriguez Peña ' '1165, Recoleta, ' 'Buenos Aires',
'zip':'C1020ADW'
},
'name':'La Cholita'
}
},
{
'created_time':'2017-11-04T13:43:00+0000',
'id':'1234',
'place':{
'id':'58666790576',
'location':{
'city':'Concepción',
'country':'Chile',
'latitude':-36.829561426349,
'longitude':-73.036282767458,
'street':'Víctor Lamas ' '#1290',
'zip':'4070386'
},
'name':'Universidad de Concepción'
}
},
我的目标是将康塞普西翁和布宜诺斯艾利斯重新列入我的城市名单
如果我这样做
city = userdata['tagged_places']['data'][0]['place']['location']['city']
城市返回正确。您需要循环查看您的项目
mydict = userdata['tagged_places']['data'][0]['place']['location']
for key, value in mydict.iteritems():
print key
print value
试试这个,看看你是否能看到你的数据….
用户数据['taged_places']['data'][0]['place']['location']
是一个命令。因此,您可以像通过
userdata['tagged_places']['data'][0]['place']['location']['city']
但是,迭代一个dict
,会产生它的键,在您的例子中,这些键是字符串:
for component in userdata['tagged_places']['data'][0]['place']['location']:
print(component)
# 'city', 'country', etc.
component['city'] # cannot work: 'city'['city']
如果你想收集所有的城市,你应该做如下事情:
# assuming data is a list, which it appears to be given your working code
for component in userdata['tagged_places']['data']:
cities.append(component['place']['location']['city'])
如果您的底层代码正常工作,那么您的问题是什么?在执行for循环之后,我得到了我提到的错误。我不明白为什么我会出错。这使我无法将所有城市添加到列表中。这两个片段都不可能工作,因为['taged_places']['data']
是一个dict而不是列表。显示您的实际数据和代码。太棒了!这很有效。然而,cities.append(组件['place']['location']['city'])仍然给我一个键错误:“city”。但是所有的城市都会被收集到list@robjeiter你的代码中断了,但城市还是被收集了起来——你把我弄丢了:)你应该像评论中指出的那样,在问题中发布你实际数据的摘录。关键错误是因为有时候城市不是由Facebook提供的。现在一切都好了。多谢各位!