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

含特殊字符的DataFrame导出CSV时列行错乱的解决方法

解决DataFrame导出CSV列行错乱问题

你的问题出在DataFrame的文本字段里包含了CSV格式的特殊字符(逗号、制表符、引号),直接导出时这些字符会被CSV解析器误判成分隔符,导致列行结构错乱。下面是具体的解决方法:

方法一:用pandas的to_csv配置参数

利用csv模块的引号控制参数,让所有字段被引号包裹,内部特殊字符会被自动转义:

import pandas as pd
import csv

data = {'col1': [1, 2, 3], 'col2': ['text,\ttabwith,co"mma";', 'text;with;"semi"c|olons', 'text\tw\ith\ttab'], 'col3': ['text,\ttabwith,comma;', 'text;wit|h;semicolons', 9]}
df = pd.DataFrame(data)

# 所有字段用引号包裹,转义内部引号,不导出索引列
df.to_csv('output.csv', quoting=csv.QUOTE_ALL, escapechar='\\', index=False)

如果只想给非数字字段加引号,可以改用csv.QUOTE_NONNUMERIC:

df.to_csv('output_nonumeric.csv', quoting=csv.QUOTE_NONNUMERIC, escapechar='\\', index=False)

方法二:手动用csv.writer导出

如果需要更自定义的导出逻辑,直接用Python内置的csv.writer处理,效果和上面一致:

import pandas as pd
import csv

data = {'col1': [1, 2, 3], 'col2': ['text,\ttabwith,co"mma";', 'text;with;"semi"c|olons', 'text\tw\ith\ttab'], 'col3': ['text,\ttabwith,comma;', 'text;wit|h;semicolons', 9]}
df = pd.DataFrame(data)

with open('manual_output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f, quoting=csv.QUOTE_ALL, escapechar='\\')
    # 写入表头
    writer.writerow(df.columns)
    # 逐行写入数据
    for _, row in df.iterrows():
        writer.writerow(row.tolist())

原理说明

  • quoting=csv.QUOTE_ALL:强制所有字段用双引号包裹,CSV读取器会将引号内的内容视为单个字段,不管里面有逗号、制表符这类分隔符。
  • escapechar='\\':转义字段内部的双引号,避免和包裹字段的引号冲突,防止解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:28:14