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