从python获取JSON数据的几个级别没有名称

时间:2015-03-27 03:45:07

标签: python json csv export-to-csv readfile

所以我写了一些简单的python代码来做一些网络报废,而且我是相当的菜鸟,所以我有一个问题。我使用以下方式获取我的json数据:

results = response.json()  

这导致我输入的网站和参数更正没问题。

这个JSON文件有几个不同的组,其中一个名为“时刻”,本身就相当深刻。

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

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

但我真正想要的是

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

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

我不仅仅使用结果['时刻']的完整输出的原因是我想将它导出到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) 

2 个答案:

答案 0 :(得分:1)

而不是做

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']]

答案 1 :(得分:0)

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

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)