python - 将 JSON 结果保存到 CSV
问题描述
所以我从一个包含字典和多个列表的 API 中提取 JSON 格式的数据。我提取的数据被正确解析和打印,将其保存在 CSV 中是个问题。
r=requests.get(url,headers=header)
result=r.json()
for log in result['logs']:
print('Driver ID: ', log['log']['driver']['username'])
print('First Name: ', log['log']['driver']['first_name'])
print('Last Name: ', log['log']['driver']['last_name'])
for event in log['log']['events']:
print('ID: ', event['event']['id'])
print('Start Time: ', event['event']['start_time'])
print('Type: ', event['event']['type'])
print('Location: ', event['event']['location'])
with open ('data.csv','w') as csvfile:
f=csv.writer(csvfile)
f.writerow(['username','first_name'])
for elem in result['logs']:
f.writerow([elem['log']['driver']['username']],elem[log['log']['driver']['first_name']]])
我只是开始将用户名和名字添加到 CSV 中,但我一直收到一条错误消息:
KeyError: 'Robert'
请务必注意,“罗伯特”不是用户名,而是名字。另外,这是JSON响应中的最后一个结果,逻辑不应该从顶部开始吗?关于如何解决它的任何想法?
这是我从中获取数据的 API,端点是 /logs:https://developer.keeptruckin.com/reference#get-logs
解决方案
您正在取消引用 elem[log['log']] 而不是 elem['log']
- f.writerow([elem['log']['driver']['username']],elem[log['log']['driver']['first_name']]])
+ f.writerow([elem['log']['driver']['username'],elem['log']['driver']['first_name']])
推荐阅读
- r - R unscale and back transform plot axis or use axis from original data column
- r - 如何在ggplot2中将重要变量相互隔离
- typescript - 在从组合 API 创建的生命周期钩子中使用它
- sql - SQL Server - 动态平均值
- javascript - 如果存在某个参数,我如何编写一个需要属性的自定义错误类?
- amazon-s3 - 在另一个账户中跨账户访问 AWS Glue 的 S3
- java - Java 将一个 JSON 字段解析为两个 Java 字段而无需设置器
- typescript - 打字稿通用转换函数
- css - 使用 display: flex 防止包装时出现空白
- rest - Rest api 强制更新资源