我正在尝试将一个很长的JSON文件转换为CSV。我目前正在尝试使用下面的代码来完成这一任务。
import json
import csv
with open('G:\user\jsondata.json') as json_file:
jsondata = json.load(json_file)
data_file = open('G:\user\jsonoutput.csv', 'w', newline='')
csv_writer = csv.writer(data_file)
count = 0
for data in jsondata:
if count == 0:
header = data.keys()
csv_writer.writerow(header)
count += 1
csv_writer.writerow(data.values())
data_file.close()
这段代码完成了将所有数据写入CSV的过程,但是只从第一个JSON行中获取的键用作CSV中的头。但是在JSON中有更多的键需要使用,这会导致值的混乱,我想知道是否有人能帮我找到一种方法来获取所有可能的头,并在一行不t包含键或该键值。
JSON文件类似于:
[
{"time": "1984-11-04:4:00", "dateOfevent": "1984-11-04", "action": "TAKEN", "Country": "Germany", "Purchased": "YES", ...},
{"time": "1984-10-04:4:00", "dateOfevent": "1984-10-04", "action": "NOTTAKEN", "Country": "Germany", "Purchased": "NO", ...},
{"type": "A4", "time": "1984-11-04:4:00", "dateOfevent": "1984-11-04", "Country": "Germany", "typeOfevent": "H7", ...},
{...},
{...},
]
我已经到处寻找可能的解决方案,但无法找到任何人有类似的问题。
2条答案
按热度按时间yiytaume1#
如果要使用csv和json模块来执行此操作,则可以分两次通过。第一次通过收集CSV文件的密钥,第二次通过将行写入CSV文件。此外,必须使用DictWriter,因为不同记录中的密钥不同。
2izufjch2#
你能不能试着正常读取它,然后用
.to_csv
将它cobert为csv,如下所示: