Python 3文本转CSV:如何解决输出文件隔行空行问题
解决CSV文件转换后隔行有空行的问题
这个问题我之前处理过好几次,根源其实是换行符的双重转换!在Windows系统下,Python的文本模式会自动将\n转换为系统默认的换行符\r\n,而csv.writer默认也会输出\r\n作为行结束符,两者叠加就导致每一行后面多了一个额外的换行,表现出来就是每隔一行空一行。
给你两种靠谱的修复方案:
方案一:使用newline=''参数(Python 3+ 推荐)
这是官方文档推荐的正确做法,通过指定newline=''来禁用Python文本模式的自动换行转换,让csv模块自己处理换行符:
import csv txt_file = r"TestData1.txt" csv_file = r"TestData1.csv" # 用with语句自动管理文件生命周期,避免资源泄漏 with open(txt_file, "rt", newline='') as infile: in_txt = csv.reader(infile, delimiter='\t') with open(csv_file, 'wt', newline='') as outfile: out_csv = csv.writer(outfile) out_csv.writerows(in_txt)
方案二:指定lineterminator参数
如果你还在使用Python 2,或者需要兼容旧代码,可以直接给csv.writer设置lineterminator='\n',强制用单个换行符:
import csv txt_file = r"TestData1.txt" csv_file = r"TestData1.csv" in_txt = csv.reader(open(txt_file, "rt"), delimiter='\t') # 手动指定行结束符为\n out_csv = csv.writer(open(csv_file, 'wt'), lineterminator='\n') out_csv.writerows(in_txt)
另外提醒一下,尽量使用with语句来打开文件,它会在代码块结束后自动关闭文件,比直接open后忘记关闭要安全得多~
内容的提问来源于stack exchange,提问作者as35fgh
相关产品推荐
相关产品推荐

