Сохранение результата JSON в CSV - PullRequest
0 голосов
/ 07 марта 2019

Итак, я извлекаю данные в формате JSON из API, в котором есть указания и несколько списков. Данные, которые я извлекаю, анализируются и печатаются правильно, они сохраняются в 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

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Вы разыменовываете элемент [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']])
1 голос
/ 07 марта 2019

Я думаю, вы имели в виду это:

-         f.writerow([elem['log']['driver']['username']],elem[log['log']['driver']['first_name']])
+         f.writerow([elem['log']['driver']['username'],elem[log['log']['driver']['first_name']]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...