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

如何用Python Pandas读取含异常引号与逗号的CSV文件

解决Pandas读取特殊格式CSV的问题

你的CSV格式不符合标准规范,导致Pandas默认解析逻辑出错。这里提供两种可行的解决思路:

方法一:预处理文件内容后读取

先清理每行的特殊首尾标记,再让Pandas按标准CSV规则解析:

import pandas as pd
from io import StringIO

# 读取原始文件内容
with open('test.csv', 'r', encoding='utf-8') as f:
    lines = f.readlines()

# 逐行预处理
processed_lines = []
for line in lines:
    # 移除行首的双引号
    line = line.lstrip('"')
    # 移除行尾的双引号+分号,保留换行符
    line = line.rstrip('";\n') + '\n'
    # 处理空值:把原文件的""""替换为标准CSV空值格式""
    line = line.replace('""""', '""')
    processed_lines.append(line)

# 将处理后的内容转为内存对象,交给Pandas读取
df = pd.read_csv(
    StringIO(''.join(processed_lines)),
    sep=',',
    quotechar='"',
    skipinitialspace=True,  # 跳过字段后的多余空格
    keep_default_na=False,  # 避免将空字符串默认转为NaN(按需调整)
    na_values=['""']  # 把""识别为NaN(按需调整)
)

方法二:用Python内置csv模块手动解析

如果预处理仍有问题,借助csv模块的灵活性自定义解析逻辑:

import pandas as pd
import csv

data = []
with open('test.csv', 'r', encoding='utf-8') as f:
    for line in f:
        # 清理首尾特殊标记
        cleaned_line = line.lstrip('"').rstrip('";\n')
        # 用csv.reader自动处理引号内的逗号分隔
        reader = csv.reader([cleaned_line], quotechar='"', skipinitialspace=True)
        row = next(reader)
        # 处理空值:将""转为None(后续可转为NaN)
        processed_row = [x if x != '""' else None for x in row]
        data.append(processed_row)

# 提取表头并转为DataFrame
headers = data[0]
df = pd.DataFrame(data[1:], columns=headers)

关键说明

  • 原问题核心是每行的首尾特殊标记(开头", 结尾";)干扰了Pandas的解析逻辑,必须先清理
  • 字段内的逗号需要靠quotechar='"'让解析器识别:引号包裹的内容里的逗号不算分隔符
  • 原文件的空值""""是CSV转义写法,对应标准空值格式"",需要替换或手动处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:20:19