如何通过Python生成符合指定格式的CSV输出文件?
解决Python生成指定格式CSV的问题
咱们来看下你的需求:你想生成每行开头是字典的键,后面跟着对应列表元素的CSV文件,但当前代码输出不符合预期。先分析下原代码的问题,再给出修正方案。
原代码的问题
你的原代码直接用csv_writer.writerows(d.items()),这里d.items()返回的是类似('a', [1,3,4])这样的元组。csv.writer处理这种元组时,会把第一个元素(键)作为第一列,然后把整个列表转换成字符串作为第二列,最终输出的CSV会是这样:
a,"[1, 3, 4]" b,"[2, 3, 4]" c,"[1]"
这显然不是你想要的格式。
修正后的代码
我们需要把每个键和它对应的列表元素合并成一个新的列表,这样csv.writer就能把每个元素作为单独的列写入。如果想要空格分隔的格式(和你给出的示例一致),可以指定delimiter=' ';如果是标准逗号分隔的CSV,去掉这个参数即可。
import csv d = {'a': [1, 3, 4], 'b': [2, 3, 4], 'c': [1]} # 生成空格分隔的CSV(匹配你的示例格式) with open("result.csv", "w", newline='') as csv_file: csv_writer = csv.writer(csv_file, dialect='excel', delimiter=' ') # 遍历每个键值对,合并键与值列表为一行 for key, values in d.items(): csv_writer.writerow([key] + values)
最终输出效果
运行后,result.csv的内容会和你期望的一致:
a 1 3 4 b 2 3 4 c 1
补充说明
- 添加
newline=''是Python的csv模块官方推荐的写法,能避免在Windows系统下写入CSV时出现多余的空行。 - 如果需要标准逗号分隔的CSV,只需要去掉
delimiter=' '参数即可,输出会是a,1,3,4这样的格式。
内容的提问来源于stack exchange,提问作者Chinna
相关产品推荐
相关产品推荐

