【问题标题】:Download REST API JSON response to a CSV file将 REST API JSON 响应下载到 CSV 文件
【发布时间】:2020-03-22 21:56:27
【问题描述】:

我对 Python/编码非常陌生,所以如果这是一个简单的问题,我深表歉意。

我正在尝试将 REST API 响应下载到 CSV 文件

import requests
import json
import csv
from pprint import pprint
r = requests.get('https://finnhub.io/api/v1/stock/executive?symbol=AAPL&token=APIKEYHERE')
f = open ('output.csv', 'w')
writer = csv.writer(f)
for line in r.iter_lines():
    writer.writerow(line.decode('utf-8').split(','))
exit()

问题是我的回答是这样的:

CSV File

{"executive":[{"age":68 "name":"Arthur D. Levinson" "since":2011 "title":"独立董事长"} {"age":58"na​​me ":"Timothy D. Cook" "since":2011 "title":"首席执行官董事"} {"age":55 "name":"Luca Maestri" "since":2014 "title":"首席财务官高级副总裁"} {"age":55 "name":"Jeffrey E. Williams" "since":2018 "title":"首席运营官"} {"age":53 "name":"Katherine L . Adams" "since":2017 "title":"高级副总裁总法律顾问秘书"} {"age":58 "name":"Philip W. Schiller" "since":2002 "title":"高级副总裁- 全球营销"} {"age":55 "name":"Eddy Cue" "since":2011 "title":"高级副总裁 - Internet 软件和服务"} {"age":48 "name":" Craig Federighi" "since":2012 "title":"高级副总裁 - 软件工程"} {"age":"" "name":"John Giannandrea" "since":2018 "title":"高级副总裁 -机乐arning 和 AI 战略"} {"age":"" "name":"Deirdre O'Brien" "since":2019 "title":"高级副总裁 - 零售 + 人员"} {"age":55 "name ":"Daniel J. Riccio" "since":2012 "title":"高级副总裁 - 硬件工程"} {"age":53 "name":"Johny Srouji" "since":2015 "title":"高级副总裁 - 硬件技术"} {"age":"" "name":"Jonathan P. Ive" "since":"" "title":"首席设计官"} {"age":70 "name" :“James A. Bell” “since”:2015 “title”:“Independent Director”} {“age”:70 “name”:“Albert A. Gore” “since”:2003 “title”:“Independent Director” } {"age":59 "name":"Andrea Jung" "since":2008 "title":"独立董事"} {"age":70 "name":"Ronald D. Sugar" "since":2010 "title":"Independent Director"} {"age":57 "name":"Sue Wagner" "since":2014 "title":"Independent Director"}] "symbol":"AAPL"}

如何获取它,以便我可以定义标题行值并确保值与每个标题对齐(即:年龄值都在年龄标题下,名称值都在名称标题下等)

这就是我想要的样子:

What I would like it to be

非常感谢任何帮助!

【问题讨论】:

  • 请编辑您的问题并将实际的响应作为文本添加到其中。您当前在问题中的屏幕截图毫无价值。

标签: python json csv


【解决方案1】:

为此,您应该使用 csv 模块的 DictWriter。这是python文档DictWriter

中的示例
import requests
import json
import csv
from pprint import pprint

r = requests.get('https://finnhub.io/api/v1/stock/executive?symbol=AAPL&token=APIKEYHERE')

with open('output.csv', 'w') as csvfile:
    fieldnames = ['name', 'age', 'title', 'since']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    recs = r.json().get('executive')
    for rec in recs:
        writer.writerow(rec)
exit()

【讨论】:

  • 谢谢 - 这使我可以将列的名称而不是相应的数据获取到正确的列中。年龄到年龄等等。
猜你喜欢
  • 2020-05-22
  • 2019-10-06
  • 2017-01-02
  • 2021-09-08
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
相关资源
最近更新 更多