如何用Python将两个列表写入CSV文件的两列?
解决CSV写入两列的问题
嘿,这个问题我之前也踩过坑!其实zip(a,b)本身是没问题的——它已经把两个列表的元素正确配对成了(1,4)、(2,5)、(3,6)这样的元组,问题出在你写入CSV文件的方式上。如果直接把这些元组当成字符串写入,Excel会把整行内容识别成一列,而不是拆分到两列。
下面给你两种靠谱的解决方法:
方法一:用Python内置的csv模块(推荐)
这是最规范的做法,csv模块会自动处理列分隔符、特殊字符等情况,避免各种奇怪的格式问题:
import csv a = [1,2,3] b = [4,5,6] # 打开文件时加上 newline='' 可以避免Windows下出现额外空行 with open('result.csv', 'w', newline='', encoding='utf-8') as csv_file: # 创建CSV写入器 writer = csv.writer(csv_file) # 先写入表头 writer.writerow(['col1', 'col2']) # 批量写入zip配对后的所有行 writer.writerows(zip(a, b))
方法二:手动写入(适合简单场景)
如果不想用csv模块,你需要手动用逗号分隔每一列的内容(CSV的核心就是用逗号分隔列):
a = [1,2,3] b = [4,5,6] with open('result.csv', 'w', encoding='utf-8') as f: # 写入表头 f.write('col1,col2\n') # 遍历zip后的配对元素,用逗号分隔写入 for num1, num2 in zip(a, b): f.write(f"{num1},{num2}\n")
为什么之前的写法会失败?
如果你之前是直接把元组转成字符串写入(比如f.write(str(row) + '\n')),那写入的内容会是(1, 4)这种带括号的格式,Excel自然会把它当成一列。而用上面的方法,写入的每一行是1,4这样的逗号分隔格式,Excel就能正确识别成两列了。
内容的提问来源于stack exchange,提问作者Shideh Hm
相关产品推荐
相关产品推荐

