Задано test.json
(с кавычками и запятыми, как видно в комментарии):
[
{"id":123,"FullName":"Иванов, \"Иван\" Иванович"},
{"id":124,"FullName":"Петров Петр Петрович"}
]
Это работает:
#!/usr/bin/env python2.7
import json
import unicodecsv as csv
with open('test.json','rb') as fin:
data = json.load(fin)
with open('test.csv','wb') as csv_file:
w = csv.writer(csv_file, encoding='utf-8-sig')
w.writerow(data[0].keys()) # header row
for row in data:
w.writerow(row.values())
Модуль json
предполагает кодировку UTF-8.
unicodecsv
принимает файл, открытый в двоичном режиме, и декодирует, используя кодировку, указанную при создании экземпляра writer
.
utf-8-sig
, если файл .CSV будет открыт в Excel, но utf8
работает иначе.
Вывод:
FullName,id
"Иванов, ""Иван"" Иванович",123
Петров Петр Петрович,124
В Excel: