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

使用pandas read_csv读取含反斜杠的CSV文件时出错

解决CSV含单/双反斜杠时pandas read_csv报错的问题

问题根源

你的CSV里混合了单反斜杠\和双反斜杠\\,而pandas.read_csv用unicode_escape编码读取时,会把单反斜杠当成转义符解析。如果单反斜杠后面跟着的不是\n、\t这类合法转义序列(比如你的例子里的\S、\P),就会触发Unicode解码错误——因为它试图解析不存在的转义规则,自然读不进去。

可行解决方案

方案1:先手动读取文件并处理反斜杠,再交给pandas

直接绕过read_csv的自动转义解析,先把文件内容读出来,统一处理反斜杠(比如换成斜杠,或者转成双反斜杠),再用StringIO传给pandas:

import pandas as pd
from io import StringIO

# 读取文件内容,把所有反斜杠替换成斜杠(若要保留反斜杠逻辑可换成:replace('\\', '\\\\'))
with open(r'C:\testfile.csv', 'r', encoding='utf-8') as f:
    content = f.read().replace('\\', '/')

# 用StringIO包装处理后的内容,让pandas读取
df = pd.read_csv(StringIO(content))
print(df.head())

这种方法最直接,适合大多数场景,不用纠结pandas的转义规则。

方案2:用csv模块先读取,再转成DataFrame

Python内置的csv模块对转义的控制更灵活,可以关闭反斜杠的转义功能,先正确读取所有字段,再转成DataFrame:

import csv
import pandas as pd

rows = []
with open(r'C:\testfile.csv', 'r', encoding='utf-8') as f:
    # 根据你的CSV实际引号情况设置quoting,比如字段都用双引号括起来就用csv.QUOTE_ALL
    reader = csv.reader(f, escapechar=None, quoting=csv.QUOTE_ALL)
    header = next(reader)
    # 遍历每一行,按需处理字段里的反斜杠
    for row in reader:
        processed_row = [col.replace('\\', '\\\\') if isinstance(col, str) else col for col in row]
        rows.append(processed_row)

df = pd.DataFrame(rows, columns=header)
print(df.head())

escapechar=None会告诉csv模块不要把反斜杠当成转义符,这样就能完整读取带单反斜杠的字段,避免解析错误。

方案3:指定engine='python'并调整转义参数

如果你的CSV格式规范,可以试试用Python引擎读取,并禁用转义解析:

import pandas as pd
import csv

df = pd.read_csv(
    r'C:\testfile.csv',
    encoding='utf-8',
    engine='python',
    escapechar=None,
    quoting=csv.QUOTE_ALL  # 需根据实际引号情况调整
)
print(df.head())

注意:默认的C引擎不支持escapechar=None,必须切换到Python引擎。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:15:22