Python如何按列写入CSV文件实现多列横向排列输出
问题根因
你当前的代码有两个核心问题:
- 语法错误:for循环后的执行代码没有缩进,循环说明文字没有加
#标记为注释,直接运行会抛出语法异常 - 逻辑错误:循环执行4次
writerow(),每次仅写入1组由两个元素构成的行,最终生成4行纵向排列的内容,和你需要的横向多列输出逻辑不符。你预期的输出实际仅需要2行内容:第一行为4个列表头,第二行为横向排列的4组拼接数据。
修正后可直接运行的代码
import csv list_1 = ["Hello", "World", "Monty", "Python"] list_2 = [1, 2, 3, 4] # 用上下文管理器自动处理文件关闭,避免手动关闭遗漏导致的资源泄漏 with open("columns.txt", "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) # 写入第一行表头 writer.writerow(["columnA", "columnB", "columnC", "columnD"]) # 同步遍历两个列表,拼接每一列的单元格内容 content_row = [f"{text},{num}" for text, num in zip(list_1, list_2)] # 一次性写入整行内容,实现横向多列排布 writer.writerow(content_row)
代码说明
- 打开文件时传入
newline=""是Python csv模块的官方推荐写法,可避免Windows系统下写入文件出现多余空行的问题 - 用
zip()同步遍历两个列表,直接把对应位置的元素拼接为你需要的字符串,数字格式,作为每个单元格的内容 - 仅调用两次
writerow()分别写入表头行和内容行,不会生成多余的纵向行
注意:csv默认用逗号作为单元格分隔符,所以当单元格内容本身包含逗号时,模块会自动给内容加双引号做转义,属于标准CSV格式,用Excel、WPS等表格工具打开时会正常识别为4列,不会把单元格内的逗号当成分隔符。如果你想要纯文本展示时列之间用空格间隔、不需要转义,可以把writer初始化代码改为writer = csv.writer(f, delimiter='\t'),用制表符做列分隔即可。
运行后生成的文件内容和你预期的效果完全一致。
内容的提问来源于stack exchange,提问作者lena
相关产品推荐
相关产品推荐

