因此,我要从具有字典和多个列表的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']]])
我只是开始将用户名和first_name添加到CSV中,但我不断收到错误消息:
KeyError: 'Robert'
请务必注意,“ Robert”不是用户名,而是名字。另外,这是JSON响应中的最后一个结果,逻辑不应该从头开始吗?关于如何解决它的任何想法?
这是我从中获取数据的API,端点是/ logs: https://developer.keeptruckin.com/reference#get-logs
答案 0 :(得分:1)
我想你的意思是
while sleep 5; do
lscpu | awk -F':[[:blank:]]+' '$1 == "CPU MHz" {print $2}'
awk '$1 == "cpu" {printf "%.4f%%\n", ($2+$4)*100/($2+$4+$5)}' /proc/stat
done | paste - -
答案 1 :(得分:1)
您正在取消引用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']])