用Python将API结果写入CSV

2024-05-23 17:40:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一些帮助来使用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列中的一个新单元格中。下面的屏幕截图:

Screenshot below:

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

代码:

data = rcomp.text

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

输出:

enter image description here

下面是从我的调用返回的一些示例API结果数据的屏幕截图:enter image description here

我要在最终的.CSV输出文件中查找的示例:enter image description here

编辑-示例API响应:

“包已创建”,“包ID”,“包名称”,“包状态”,“包已损坏”,“包已更新”,“发件人ID”,“发件人名称”,“发件人公司”,“发件人已创建”,“发件人电子邮件”,“发件人名字”,“发件人语言”,“发件人姓氏”,“发件人电话”,“发件人标题”,“发件人已更新”,“发件人已激活”,“发件人已锁定”,“发件人状态”,“发件人类型” “4月4日星期四14:52:57 CDT 2016”,“ulw5MTQo8WjBfoCTKqz9LNCFpV4=”,“TestOne到TestTwo-将PDF扁平化删除”,“COMPLETED”,“false”,“4月4日星期四14:53:30 CDT 2016”,“tKpohv2kZ2oU”,“2016-08-03 14:12:06.904”,“testaccount@test.com”,“John”,“en”,“Smith”,“Smith”,“2016-08-03 14:12:06.942118”,“null”,“null”,“INVITED”,“REGULAR” “2016年8月4日星期四09:39:22 CDT”,“IJV3U戋yjPlxS-tvqgmrngvuuss=”,“TestOne to TestTwo-Email Test”,“COMPLETED”,“false”,“2016年8月4日星期四10:11:29 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”

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

enter image description here


Tags: 文件csvtocsvfile代码textimportapi
2条回答
csvFile = open('C:\_Python\\CompletionReportOutput.csv', 'w')

writer = csv.writer(csvFile, delimiter = ' ')

for row in data.split('\n'):
    writer.writerow(row)

所以,我最终找到了一个解决方案。不确定这是否是处理此问题的“正确”方法,但下面的代码将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()

相关问题 更多 >