You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用csv.writer写入含转义字符的字符串?解决换行失效问题

解决csv.writer写入含特殊字符字符串的报错与换行符处理问题

问题原因

默认情况下,csv.writer的quoting参数为csv.QUOTE_MINIMAL,仅在字段包含分隔符、引号时才添加引号包裹。当字段包含换行符\n时,若未启用合适的引号规则,csv模块无法正确识别换行符为字段内容的一部分;同时,字段中存在需要转义的特殊字符时,未设置escapechar会触发转义错误。

解决方案

通过同时配置escapechar和quoting参数,即可解决报错并正确保留换行符:

1. 选择合适的引号规则

常用的两种引号配置:

  • csv.QUOTE_ALL:所有字段都用引号包裹,确保任何特殊字符(包括换行符)都被正确识别为字段内容。
  • csv.QUOTE_NONNUMERIC:仅非数字字段添加引号,适合数字与字符串混合的数据集。

2. 完整代码示例

import csv

# 注意:Python中字面量反斜杠需用\\表示,所以\g应写成\\g
problem_string = "this \n sentence % is \n problematic \\g"

# 打开文件时指定newline='',避免额外空行
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    # 配置escapechar和quoting参数
    writer = csv.writer(f, escapechar='\\', quoting=csv.QUOTE_ALL)
    writer.writerow([problem_string])

3. 参数说明

  • escapechar='\\':指定转义字符,用于处理字段中出现的引号、分隔符等需要转义的内容。
  • quoting=csv.QUOTE_ALL:强制所有字段用引号包裹,换行符会被包含在引号内,csv读取时会将其识别为字段的一部分,而非行结束符。
  • newline='':让csv模块自行处理行结束符,避免Windows系统下写入时出现多余空行。

效果验证

写入后的CSV文件中,目标字段会被双引号包裹,换行符保留在字段内,特殊字符也会被正确转义,读取时可完整还原原字符串内容。

内容的提问来源于stack exchange,提问作者DOMINi04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:55:27