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

使用csv.writer时为何出现额外反斜杠?如何消除?

CSV写入时逗号前出现反斜杠的原因及解决方法

代码示例

import csv

rows = [["Line 5"], ["4 1.66 0 0 ! x1, x2, x3, x4"]]
        
# opening the CSV file
with open('testing.txt', 'w', newline='') as file:

# writing the CSV file
  writer = csv.writer(file, quotechar='"', quoting=csv.QUOTE_NONE, escapechar='\\')
  writer.writerows(rows)

运行结果

Line 5
4 1.66 0 0 ! x1\, x2\, x3\, x4

疑问

为何x1、x2、x3后会出现这些反斜杠?如何去除它们?


原因分析

你设置了quoting=csv.QUOTE_NONE,这表示CSV写入器不会用引号包裹包含特殊字符的字段。而逗号是CSV格式的默认字段分隔符,当字段内容里出现逗号时,写入器会用你指定的escapechar='\\'来转义这个逗号,避免它被误判为字段分隔的标记,所以就出现了这些反斜杠。

解决方法

根据实际需求,有两种常用处理方式:

  • 方式一:让写入器自动用引号包裹特殊字段
    将quoting参数改为csv.QUOTE_NONNUMERIC(仅给非数字字段加引号)或csv.QUOTE_ALL(给所有字段加引号),这样写入器会用引号把包含逗号的字段包裹起来,无需转义逗号:

    import csv
    
    rows = [["Line 5"], ["4 1.66 0 0 ! x1, x2, x3, x4"]]
            
    with open('testing.txt', 'w', newline='') as file:
      writer = csv.writer(file, quotechar='"', quoting=csv.QUOTE_NONNUMERIC)
      writer.writerows(rows)
    

    运行后输出:

    Line 5
    "4 1.66 0 0 ! x1, x2, x3, x4"
    
  • 方式二:修改CSV的字段分隔符
    如果你的数据里的逗号只是普通文本字符,不需要作为字段分隔符,可以指定一个数据中不存在的字符作为delimiter(比如制表符'\t'),这样写入器就不会把逗号当成分隔符来转义:

    import csv
    
    rows = [["Line 5"], ["4 1.66 0 0 ! x1, x2, x3, x4"]]
            
    with open('testing.txt', 'w', newline='') as file:
      writer = csv.writer(file, quotechar='"', quoting=csv.QUOTE_NONE, escapechar='\\', delimiter='\t')
      writer.writerows(rows)
    

    运行后输出:

    Line 5
    4 1.66 0 0 ! x1, x2, x3, x4
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:57:27