【发布时间】:2019-04-24 17:25:22
【问题描述】:
我正在使用 api 调用来请求数据,它返回 JSON。我需要将此响应保存到 CSV 文件中。
我能够提取 JSON 响应,但在写入 CSV 时遇到问题。
# import statements
import json # package to work with json
import requests # package to make http requests
import csv
# set global variables
group_id = 0000
api_token = 'yyyy'
api_url = 'https://api.samsara.com/v1'
endpoint_url = api_url + '/fleet/drivers'
# query params for the request
my_params = {"access_token": api_token}
# body data to send with the request
my_data = {"groupId": group_id}
# send POST request to endpoint
resp = requests.post(url = endpoint_url, params = my_params, json = my_data)
# pull out the json
array = resp.json()
text = json.dumps(array)
csvFile = open('/tmp/output.csv','w')
csvwriter = csv.writer(csvFile)
count = 0
for line in text:
if count == 0:
header = line.keys()
csvwriter.writerow(header)
count += 1
csvwriter.writerow(line.values())
csvFile.close()
当我运行上面的代码时,我得到以下错误:
Traceback(最近一次调用最后一次):文件“get_driver_test4.py”,行 34,在 header = line.keys() AttributeError: 'str' object has no attribute 'keys'
【问题讨论】:
-
JSON 是什么样的?你能分享一个例子吗?
-
这里是 JSON 的缩写版本...................................... .......{“驱动程序”:[{“id”:134763,“groupId”:0000,“vehicleId”:212014918234742,“currentVehicleId”:212014918234742,“用户名”:“ablah”,“名称”: “Art Blah”},{“id”:134764,“groupId”:0000,“vehicleId”:212014918234709,“currentVehicleId”:212014918234709,“username”:“btodd”,“name”:“Barry Todd”}]}
-
请edit您的问题并添加以澄清它。也就是说,如果您可以使用 JSON 并且从不混合元格式,请不要使用 CSV 作为元格式,您只是在自找麻烦。但是,这不是您的问题,因为您从响应中解码 JSON 并将该数据写入 CSV(元格式转换)。关于您的问题,请提取minimal reproducible example,以便每个人都可以重现您的问题。
标签: json python-3.x csv