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

Python CSV Writer如何仅转义分隔符而不转义转义字符

解决Python CSV Writer不转义转义符本身的问题

要解决这个问题,核心是绕过csv模块默认的转义机制,手动完成分隔符转义,同时让模块不对转义字符本身做额外处理:

  1. 手动预处理字段:遍历每个字段,把其中的分隔符|替换成!|——这正是Teradata认可的转义格式。
  2. 配置CSV Writer参数:关闭自动转义和引号功能,避免模块对!进行多余转义。

直接上代码示例:

import csv

# 模拟从JSON读取的原始数据
raw_data = [
    ["user|123", "comment!with!exclamations", "normal|mixed!content"]
]

with open('teradata_output.csv', 'w', newline='', encoding='utf-8') as outfile:
    # 配置分隔符为|,关闭引号和自动转义
    writer = csv.writer(outfile, delimiter='|', quoting=csv.QUOTE_NONE)
    # 预处理每个字段,仅转义分隔符|
    processed_rows = [
        [field.replace('|', '!|') for field in row]
        for row in raw_data
    ]
    writer.writerows(processed_rows)

生成的CSV内容如下:

user!|123|comment!with!exclamations|normal!|mixed!content

Teradata会正确识别!|为转义后的分隔符,而字段中原本的!会被当作普通数据保留,完全符合需求。

之所以不用csv模块自带的escapechar参数,是因为该模块的设计逻辑会自动转义转义字符本身(比如设置escapechar='!'时,字段里的!会被转成!!),这和Teradata的规则冲突,手动预处理是最直接简便的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:40:28