从 python 几层深度获取 JSON 数据,但没有名称

getting JSON data from python several levels deep without names

所以我写了一些简单的 python 代码来做一些 web-scraping 并且我相当菜鸟,所以我有一个问题。我使用以下方法获取 json 数据:

results = response.json()  

这使我的网站输入和参数正确没有问题。

这个 JSON 文件有几个不同的组,其中一个标题为 'moments',它本身就相当深入。

所以,例如为了得到我想要的一部分,我可以做一个

print results['moments'][0][5]

但我真正想要的是得到

results['moments'][0][5]
results['moments'][1][5]
results['moments'][2][5]
results['moments'][3][5]

等等...通过几百个,所以我不确定如何迭代它并使 [5] 保持在下一层。

我不只使用结果的完整输出的原因['moments'] 是我想将其导出到 excel,如果我只是使用 csv_writer刚刚

results['moments']

它实际上并没有用逗号分隔值,所以我最终在第 1 列中用长括号括起来的值,但是如果我进入第 3 级,当我输出到 excel 时它将被逗号分隔。

我确定有多种方法可以解决此问题。 请参阅下面的代码

response = session.get('http://xxxxxxxxxxxx', params=params)
     
results = response.json()

location = results['moments'][0][5]    
print location


with open('Location1.csv', 'wb') as test_file:
    csv_writer = csv.writer(test_file)
    for y in location:
        csv_writer.writerow(y) 

而不是做

results['moments'][0][5]
results['moments'][1][5]
results['moments'][2][5]
results['moments'][3][5]

您可以使用简单的列表理解来为您执行此操作,您可以在其中迭代列表的长度 results['moments']。注意其他索引保持不变,如下图:

locations = [results['moments'][i][5] for i in xrange(len(results['moments']))]

locations = [moment[5] for moment in results['moments']]

这是您要找的吗? (假设您粘贴的代码有效。)

response = session.get('http://xxxxxxxxxxxx', params=params)
results = response.json()
for i in xrange(len(results['moments'])):
  location = results['moments'][i][5]
  with open('Location'+str(i+1)+'.csv', 'wb') as test_file:
    csv_writer = csv.writer(test_file)        
    for y in location:        
      csv_writer.writerow(y)