如何将列表导出为单列CSV并去除末尾逗号?
问题解析与解决方案
咱先澄清第一个疑问:这跟记事本没关系,完全是代码的参数设置和写入逻辑出了问题。
为啥会出现当前的错误输出?
你原代码里犯了两个关键错误:
- 把
csv.writer的lineterminator(行结束符)设成了,,这会导致写完一行后自动加逗号,而不是默认的换行符。 - 用
writerow(phone_names_value_list)是把整个列表里的所有元素当成同一行的多列来写入,所以所有名字会挤在一行,用逗号分隔,再加上行结束符是逗号,就出现了末尾多出来的逗号。
修改成单列CSV的正确写法
要实现每个名字单独占一行的单列效果,有两种简单的写法:
写法一:用writerows批量写入
把每个名字包装成单元素列表,writerows会自动把每个单元素列表当成一行写入:
import csv phone_names_value_list = ['Jimmy French', 'Casey Fryer', 'Jane Pickens', 'Tommy L. Garcetti', 'Nada Lewis'] with open("export_5.csv", "w", newline='') as f: writer = csv.writer(f) # 生成每个名字的单元素列表迭代器,批量写入 writer.writerows([name] for name in phone_names_value_list)
写法二:循环逐个写入
如果觉得批量写法不好理解,也可以循环遍历列表,每个名字单独用writerow写入:
import csv phone_names_value_list = ['Jimmy French', 'Casey Fryer', 'Jane Pickens', 'Tommy L. Garcetti', 'Nada Lewis'] with open("export_5.csv", "w", newline='') as f: writer = csv.writer(f) for name in phone_names_value_list: writer.writerow([name]) # 每个名字作为单独一行的一列
关键细节说明
newline=''是csv模块官方推荐的写法,能避免Windows和Unix系统下换行符混乱的问题。- 不用手动设置
lineterminator,默认的换行符(Windows是\r\n,Unix是\n)就符合CSV规范,用记事本打开也会每行显示一个名字。 - 修改后生成的CSV完全没有多余的末尾逗号,每个名字单独占一行,完美符合你的需求。
内容的提问来源于stack exchange,提问作者savvysavage32
相关产品推荐
相关产品推荐

