Как результаты парсинга API в формате JSON записать в CSV отдельными строками
Задача - сформировать таблицу с данными в формате CSV парсингом API.
В результате парсинга API кодом Python в переменную data получаю такую строку JSON:
{
'Identifier': 'edf627bda4f345c5948396e1497a7e48',
'User': 'USER',
'State': 'OK',
'Vin': 'XW8ZZZ61ZJG000000',
'Count': '2',
'VehicleType': 'PC',
'VehicleTypeNumber': '23',
'Brand': 'VOLKSWAGEN',
'Model': 'POLO',
'Year': '2018',
'Power': '90',
'TaxiInformations': {'1': {'inn': '7720000000',
'company': 'ООО «Ромашка»',
'date': '22.11.2018'},
'2': {'inn': '7720000000',
'company': 'ООО «Ромашка»',
'date': '09.12.2020'}
},
'LeasingDetails': {}
}
Когда дальше пытаюсь записать результат циклом в файл CSV, то либо все данные добавляются в одну строку, либо в разные строки, но разбитые на отдельные знаки в отдельных столбцах.
Ниже пример кода с двумя вариантами, которые не решают мою задачу:
df = pd.read_excel("base_vin.xlsx", header=None, index_col=None)
vin = df.to_numpy().flatten()
password = 'PASSWORD'
data = []
for i in vin:
url = 'http://site.com/api/searchvinextended?user=USER&password=' + password + '&vin=' + i
data = requests.get(url).json()
file = open('result.csv', 'a')
# Вариант 1:
file.write(json.dumps(data, ensure_ascii=False))
# Вариант 2
# writer = csv.writer(file)
# writer.writerows([json.dumps(data, ensure_ascii=False)])
Мне нужно записать данные, указанные через разделитель ',' в отдельные столбцы. В идеале вообще получить из первой строки JSON заголовки и данные для первой строки, а из остальных писать в последующие строки только данные.
Подскажите, пожалуйста, как нужно доработать код?
Ответы (1 шт):
Вы же выше по коду используете библиотеку Pandas, почему бы и тут не использовать её же?
import pandas as pd
data = {
'Identifier': 'edf627bda4f345c5948396e1497a7e48',
'User': 'USER',
'State': 'OK',
'Vin': 'XW8ZZZ61ZJG000000',
'Count': '2',
'VehicleType': 'PC',
'VehicleTypeNumber': '23',
'Brand': 'VOLKSWAGEN',
'Model': 'POLO',
'Year': '2018',
'Power': '90',
'TaxiInformations': {'1': {'inn': '7720000000',
'company': 'ООО «Ромашка»',
'date': '22.11.2018'},
'2': {'inn': '7720000000',
'company': 'ООО «Ромашка»',
'date': '09.12.2020'}
},
'LeasingDetails': {}
}
df = pd.DataFrame(data)
df.to_csv('result.csv', index=False)
Содержимое result.csv:
Identifier,User,State,Vin,Count,VehicleType,VehicleTypeNumber,Brand,Model,Year,Power,TaxiInformations,LeasingDetails
edf627bda4f345c5948396e1497a7e48,USER,OK,XW8ZZZ61ZJG000000,2,PC,23,VOLKSWAGEN,POLO,2018,90,"{'inn': '7720000000', 'company': 'ООО «Ромашка»', 'date': '22.11.2018'}",
edf627bda4f345c5948396e1497a7e48,USER,OK,XW8ZZZ61ZJG000000,2,PC,23,VOLKSWAGEN,POLO,2018,90,"{'inn': '7720000000', 'company': 'ООО «Ромашка»', 'date': '09.12.2020'}",