在 Python 中将 API 结果写入 CSV

新手上路,请多包涵

我正在寻找有关使用 Python 将 API 结果写入 .CSV 文件的帮助。此时,我已成功写入 .CSV,但我似乎无法确定我正在寻找的 .CSV 格式背后的代码,这是标准的一个字段 = 一列格式。

任何帮助表示赞赏!详情如下。谢谢!

我的代码:

 import requests
import json
import csv

urlcomp = 'http://url_ommitted/api/reports/completion?status=COMPLETED&from=2016-06-01&to=2016-08-06'
headers = {'authorization': "Basic API Key Ommitted", 'accept': "application/json", 'accept': "text/csv"}

## API Call to retrieve report
rcomp = requests.get(urlcomp, headers=headers)

## API Results
data = rcomp.text

## Write API Results to CSV
with open('C:_Python\\testCompletionReport.csv', "wb") as csvFile:
    writer = csv.writer(csvFile, delimiter=',')
    for line in data:
        writer.writerow(line)

上面的代码创建了一个具有正确输出的 .CSV,但它将 API 结果中的每个字符写入输出文件 A 列中的一个新单元格。 截图如下:

截图如下:

我还尝试了下面的代码,它将整个 API 结果集写入 .CSV 输出文件的单个单元格中。

代码:

 data = rcomp.text

with open('C:_Python\\CompletionReportOutput.csv', 'wb') as csvFile:
    writer = csv.writer(csvFile, delimiter = ',')
    writer.writerow([data])

输出:

在此处输入图像描述

下面是我的调用返回的一些示例 API 结果数据的屏幕截图: 在此处输入图像描述

我在最终 .CSV 输出文件中寻找的示例: 在此处输入图像描述

编辑 - 示例 API 响应:

“包裹已创建”,“包裹 ID”,“包裹名称”,“包裹状态”,“包裹已损坏”,“包裹已更新”,“发件人 ID”,“发件人姓名”,“发件人公司”,“发件人已创建”, “发件人电子邮件”,“发件人名字”,“发件人语言”,“发件人姓氏”,“发件人电话”,“发件人职位”,“发件人更新”,“发件人激活”,“发件人锁定”,“发件人状态”, “发件人类型”“2016 年 8 月 4 日星期四 14:52:57 CDT”,“ulw5MTQo8WjBfoCTKqz9LNCFpV4=“,“TestOne 到 TestTwo - 已删除 PDF 拼合”,“已完成”,“假”,“8 月 4 日星期四 14:53:30 CDT” 2016”,“tKpohv2kZ2oU”,“”,“”,“2016-08-03 14:12:06.904”,“testaccount@test.com”,“John”,“en”,“Smith”,“”,” “,“2016-08-03 14:12:06.942118”,“null”,“null”,“INVITED”,“REGULAR” “2016 年 8 月 4 日周四 09:39:22 CDT”,“IJV3U_yjPlxS-TVQgMrNgVUUSss=”, “TestOne 到 TestTwo - 电子邮件测试”,“已完成”,“假”,“2016 年 8 月 4 日星期四 10:11:29 CDT”,“tKpohv2kZ2oU”,“”,“”,“2016-08-03 14:12: 06.904”,“testaccount@test.com”,“John”,“en”,“Smith”,“”,“”,“2016-08-03 14:12:06.942118”,“null”,“null”, “邀请”、“常规”

第二次编辑 - Lee 建议的输出:

在此处输入图像描述

原文由 jdgaub 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 719
1 个回答

所以,我最终偶然发现了一个解决方案。不确定这是否是处理此问题的“正确”方式,但下面的代码将 API 结果直接写入具有正确列格式的 .CSV 中。

 # Get JSON Data
rcomp = requests.get(urlcomp, headers=headers)

# Write to .CSV
f = open('C:_Python\Two\\newfile.csv', "w")
f.write(rcomp.text)
f.close()

原文由 jdgaub 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题