Ниже приведен пример данных во входном файле. Мне нужно обработать этот файл и превратить его в CSV-файл. С некоторой помощью я смог преобразовать его в CSV-файл. Однако не полностью преобразован в CSV, так как я не могу обработать \ n, пустую строку (2-я строка) и пустую строку (4-я строка). Кроме того, мне нужна помощь, чтобы отфильтровать тип транзакции, т. Е. Избежать «переписать» тип транзакции
{"transaction_type": "new", "policynum": 4994949}
44uu094u4
{"transaction_type": "renewal", "policynum": 3848848,"reason": "Impressed with \n the Service"}
{"transaction_type": "cancel", "policynum": 49494949, "cancel_table":[{"cancel_cd": "AU"}, {"cancel_cd": "AA"}]}
{"transaction_type": "rewrite", "policynum": 5634549}
Ниже приведен код
import ast
import csv
with open('test_policy', 'r') as in_f, open('test_policy.csv', 'w') as out_f:
data = in_f.readlines()
writer = csv.DictWriter(
out_f,
fieldnames=[
'transaction_type', 'policynum', 'cancel_cd','reason'],lineterminator='\n',
extrasaction='ignore')
writer.writeheader()
for row in data:
dict_row = ast.literal_eval(row)
if 'cancel_table' in dict_row:
cancel_table = dict_row['cancel_table']
cancel_cd= []
for cancel_row in cancel_table:
cancel_cd.append(cancel_row['cancel_cd'])
dict_row['cancel_cd'] = ','.join(cancel_cd)
writer.writerow(dict_row)
Ниже приведен мой вывод, не учитывающий пустую строку, пустую строку итип транзакции "перезаписать".
тип транзакции, policynum, cancel_cd, причина
new, 4994949 ,,
продление, 3848848 ,, "Впечатлено
Услуга"
отмена, 49494949, "AU, AA",
Ожидаемый результат
тип_такции транзакции, policynum, cancel_cd, причина
новый, 4994949 ,,
обновление, 3848848 ,, "Впечатлен сервисом"
отмена, 49494949, "AU, AA",