所以我写了一些简单的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)
答案 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)