gpt4 book ai didi

python - 使用 csv.DictWriter 水平写入列表值

转载 作者:太空宇宙 更新时间:2023-11-03 21:20:15 24 4
gpt4 key购买 nike

我有一个字典想要写入 CSV 文件。但是,字典中的某些键有一个值列表,我想在单独的单元格中水平写入列表的每个元素。

data = {"Age": 28, "Name": "Some Name", "Aliases": ["alias1", "alias2"]}
fieldnames = ['Age', 'Name', 'Aliases']

with open(f, 'a') as o:
writer = csv.DictWriter(o, fieldnames=fieldnames)
writer.writeheader()
writer.writerow(data)

别名以数组形式写入单个单元格中,这是预期的。我将列表转换为逗号分隔的字符串 data["Aliases"] = ', '.join(data['Aliases']) 但此逗号分隔的字符串也被写入同一单元格。

关于如何将列表的每个元素写入单独的单元格的任何想法。

最佳答案

CSV 文件有分隔符,而不是单元格

这是一个小但重要的点。您所说的“单元格”大概就是您在 Excel 中打开 CSV 文件时看到的内容。对于读取 CSV 文件的程序,字段内的逗号分隔符和引号分隔符具有特殊含义。

csv.DictWriter 适用于结构化数据,即每行每个字段一个值。您的数据本质上是非结构化的。如果您希望每行具有任意长度,您可以通过 csv.writer 实现此目的:

import csv

data = {"Age": 28, "Name": "Some Name", "Aliases": ["alias1", "alias2"]}
fieldnames = ['Age', 'Name', 'Aliases']

with open('file.csv', 'w', newline='') as fout:
writer = csv.writer(fout)
writer.writerow(fieldnames)
writer.writerow([data['Age'], data['Name'], *data['Aliases']])

结果file.csv:

Age,Name,Aliases
28,Some Name,alias1,alias2

关于python - 使用 csv.DictWriter 水平写入列表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54336775/

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