gpt4 book ai didi

python - 基于 JSON 字典键的 CSV header

转载 作者:行者123 更新时间:2023-12-01 07:17:26 24 4
gpt4 key购买 nike

我有一个像这样的 JSON:

[
{
'name':'test1',
'random1':'random_1_value'
},
{
'name':'test2',
'random2':'random_2_value'
'random4':'random_4_value'
},
{
'name':'test3',
'random3':'random_3_value'
},
]

我想转换此 JSON 并根据字典键构建 CSV header 。然后分别填充每一行。预期输出:

name, random1, random2, random4, random3
test1, random_1_value
test2, ,random_2_value, random_4_value, ,
test3, , , , random_3_value

这是我到目前为止的代码:

data = json.loads(open('output_data.json').read())
csvwriter = csv.writer(open("output.csv", "w"))
count = 0
for emp in data:
if count == 0:
header = emp.keys()
csvwriter.writerow(header)
count += 1
csvwriter.writerow(emp.values())

最佳答案

您可以使用 collections 的组合和 csv标准库中的模块可以执行此操作。

我们可以使用collections.OrderedDict按照列名出现的顺序获取列名。

我们使用 OrderedDict 以便代码可以在 3.7 之前的 Python 版本上运行。从 Python 3.7 开始,该语言保证普通字典会记住其键的插入顺序。如果您的代码只能由 Python 3.7+ 运行,您可以使用 dict内置而不是 OrderedDict

headers = collections.OrderedDict((key, None) for dict_ in data for key in dict_) 

既然已经生成了列名,请使用 csv.DictWriter将数据中的每个字典写入输出文件。 DictWriter 自动处理缺失的键,确保每个数据项都写入正确的列。

with open('output.csv', 'w', newlines='') as f:
writer = csv.DictWriter(f, fieldnames=headers)
# Write the column names to file.
writer.writeheader()
# Write the data to file.
writer.writerows(data)

关于python - 基于 JSON 字典键的 CSV header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57883077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com