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

如何用Python Pandas在导入DataFrame前替换CSV中的特殊字符

解决Pandas读取CSV时中文右引号导致的元素合并问题

完全懂这种拿到脏数据的烦恼——手动修改CSV文件既麻烦又不适合批量处理场景,下面给你两个无需修改原文件的解决方案,直接在读取时完成字符替换:

方法一:内存中一次性替换(适合中等大小数据集)

通过读取文件内容并实时替换中文右引号,再用StringIO模拟文件对象传给Pandas,全程不碰原文件:

import pandas as pd
from io import StringIO

# 读取文件内容并替换中文右引号为英文双引号
with open('your_dataset.csv', 'r', encoding='utf-8') as file:
    cleaned_content = file.read().replace('”', '"')

# 将清洗后的内容转为可读取的文件流,再用Pandas读取
df = pd.read_csv(StringIO(cleaned_content), quotechar='"')

如果你的数据里同时存在中文左引号“,可以把替换语句改成:

cleaned_content = file.read().replace('”', '"').replace('“', '"')

方法二:逐行分块处理(适合超大型数据集)

如果数据集大到一次性读取会占满内存,可以用逐行读取替换+分块加载的方式,避免内存过载:

import pandas as pd
from io import StringIO

chunk_size = 10000  # 根据你的内存容量调整分块大小
processed_chunks = []

with open('your_dataset.csv', 'r', encoding='utf-8') as file:
    # 先处理表头行
    header_line = file.readline().replace('”', '"')
    # 分块读取剩余内容,每块都先完成替换
    for chunk in pd.read_csv(
        StringIO(header_line + file.read()),
        quotechar='"',
        chunksize=chunk_size
    ):
        processed_chunks.append(chunk)

# 合并所有分块成完整DataFrame
df = pd.concat(processed_chunks, ignore_index=True)

额外注意事项

  • 确认文件编码:如果你的CSV不是utf-8编码(比如GBK),记得把encoding参数改成对应值(如encoding='gbk');
  • 验证引号识别:确保quotechar='"'参数正确设置,让Pandas能正确识别英文双引号作为元素包裹符;
  • 特殊情况排查:如果还有其他类似的特殊引号(比如全角双引号),可以在replace里继续添加替换规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:38:35