Python CSV读写如何保留双引号?添加列后格式异常问题
解决CSV保留双引号格式并添加列的问题
要实现保留原CSV的双引号格式(包括表头、空值)并添加新列,关键是在使用csv.writer时设置强制所有字段加引号的参数,同时保持读写时的格式一致性。
完整代码实现
import csv # 读写CSV文件,注意newline=''避免额外空行,指定编码保持字符一致 with open('input.csv', 'r', newline='', encoding='utf-8') as infile, \ open('output.csv', 'w', newline='', encoding='utf-8') as outfile: # 读取原文件,写入时强制所有字段用双引号包裹 csv_reader = csv.reader(infile) csv_writer = csv.writer(outfile, quoting=csv.QUOTE_ALL) # 处理表头:添加新列名 header_row = next(csv_reader) header_row += ['col_1', 'col_2'] csv_writer.writerow(header_row) # 处理数据行:添加新列值(示例设为空,可按需修改) for data_row in csv_reader: # 原空值会被解析为空字符串,writer自动转为"" data_row += ['', ''] # 替换为你的实际业务值 csv_writer.writerow(data_row)
关键参数说明
quoting=csv.QUOTE_ALL:这是核心设置,告诉csv.writer给所有字段(包括表头、空值、普通文本)都加上双引号,完全匹配原文件的格式。newline='':按照Python官方文档要求,读写CSV时必须设置这个参数,避免Windows系统下生成额外的空行。- 编码一致性:读写时使用相同的编码(比如
utf-8),防止中文或特殊字符乱码。
特殊情况处理
如果你的CSV使用了非逗号的分隔符(比如分号;),只需在csv.reader和csv.writer中添加delimiter参数:
csv_reader = csv.reader(infile, delimiter=';') csv_writer = csv.writer(outfile, delimiter=';', quoting=csv.QUOTE_ALL)
内容的提问来源于stack exchange,提问作者Roshan007
相关产品推荐
相关产品推荐

