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

使用read_csv读取CSV时单列多格式内容解析失败的求助

解析含特殊格式值的CSV文件

针对CSV中带引号的"(10,12)"这类值无法正确解析的问题,给你几个实用解决思路:

方法一:调整pandas读取参数并使用Python引擎

pandas的C引擎对复杂引号场景支持有限,改用Python引擎配合quoting=pd.QUOTE_NONE,可强制不将引号作为单元格分隔标识,避免内容被拆分:

import pandas as pd

df = pd.read_csv(
    'your_file.csv',
    sep=',',
    engine='python',
    quotechar='"',
    quoting=pd.QUOTE_NONE
)

如果引号只是单元格内容的一部分,这个方法能直接保留原始内容,不会误拆分列。

方法二:预处理文件清除多余引号

如果引号是多余的(比如单元格内容本应是(10,12)却被加了引号),可以用正则匹配并替换单元格首尾的引号,避免干扰解析:

import pandas as pd
import re

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

# 精准替换单元格首尾的引号(不影响内容内部符号)
processed_content = re.sub(r'(?<=,)"(?=\()|(?<=\))"(?=,|\n)', '', content)

# 写入临时文件后读取
with open('temp_processed.csv', 'w', encoding='utf-8') as f:
    f.write(processed_content)

df = pd.read_csv('temp_processed.csv')

这个正则只会匹配紧跟在逗号后、开头是(的引号,以及紧跟在)后、结尾是逗号或换行的引号,不会误改其他内容。

方法三:用csv模块逐行预处理后转DataFrame

直接使用Python标准库的csv模块读取每行,手动处理每个单元格的引号,再转成DataFrame,灵活性更高:

import pandas as pd
import csv

rows = []
with open('your_file.csv', 'r', encoding='utf-8') as f:
    # 初始化csv读取器,指定分隔符和引号字符
    reader = csv.reader(f, delimiter=',', quotechar='"')
    for row in reader:
        # 去除每个单元格首尾的引号(仅当单元格被引号包裹时)
        processed_row = [
            cell.strip('"') if cell.startswith('"') and cell.endswith('"') else cell
            for cell in row
        ]
        rows.append(processed_row)

# 转换为DataFrame,第一行作为表头
df = pd.DataFrame(rows[1:], columns=rows[0])

这种方式可以逐行控制处理逻辑,适合格式特别混乱的CSV文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:32:21