Python写入CSV出现空行导致读取报错,如何解决?
解决Python CSV写入时行间空行问题
这问题根源是Windows系统下,csv模块和文件系统的换行处理冲突导致的。直接改写入代码就能解决,不用在读取环节绕弯子。
错误写法示例
你之前的代码大概率是这样的:
import csv data = [["问题1", "选项A", "选项B", "正确答案"], ["问题2", "选项X", "选项Y", "正确答案"]] # 错误:未指定newline参数 with open('quiz.csv', 'w', encoding='utf-8') as f: writer = csv.writer(f) writer.writerows(data)
这种写法在Windows环境下,会让每行数据后多生成一个空行,读取时就会读到空列表,直接触发IndexError: list index out of range。
正确写法
打开文件时添加newline=''参数,把换行逻辑交给csv模块自己处理:
import csv data = [["问题1", "选项A", "选项B", "正确答案"], ["问题2", "选项X", "选项Y", "正确答案"]] # 正确:指定newline='' with open('quiz.csv', 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f) writer.writerows(data)
原理说明
csv模块遵循RFC 4180标准处理换行,当你打开文件时指定newline='',Python就不会自动转换换行符,完全由csv模块来控制换行输出,这样就不会出现多余的空行了。
内容的提问来源于stack exchange,提问作者lll
相关产品推荐
相关产品推荐

