【发布时间】:2022-11-02 23:44:31
【问题描述】:
我正在尝试将一个很长的 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 中还有更多的键可供使用。这会导致值混乱。我想知道是否有人可以帮助我找到一种方法来获取所有可能的标题并可能在一行不包含该键或该键的值时插入 NA 。
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", ...},
{...},
{...},
]
我一直在寻找可能的解决方案,但找不到任何有类似问题的人。
【问题讨论】: