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

Python CSV解析问题:忽略大括号内的逗号分隔符

Pandas读取含JSON格式列的CSV文件解决方案

方法1:借助Python标准库csv预处理后转DataFrame

标准库csv对带特殊字符的字段处理更精准,尤其是当JSON字段被引号包裹时,它会自动忽略字段内部的逗号。步骤如下:

import csv
import pandas as pd

data = []
with open(file_name, 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    header = next(reader)  # 读取表头
    for row in reader:
        # csv.reader已自动完整读取含JSON的第3列(索引从0开始为第2列)
        data.append(row)

# 转换为DataFrame
df = pd.DataFrame(data[1:], columns=data[0])

如果目标列的JSON未被引号包裹,可自定义逻辑识别大括号包裹的字段:

import csv
import pandas as pd

def parse_custom_row(row_str):
    # 拆分行时,保留大括号内的内容不拆分
    parts = []
    current = []
    brace_count = 0
    for char in row_str:
        if char == ',' and brace_count == 0:
            parts.append(''.join(current))
            current = []
        else:
            current.append(char)
            if char == '{':
                brace_count += 1
            elif char == '}':
                brace_count -= 1
    parts.append(''.join(current))
    return parts

data = []
with open(file_name, 'r', encoding='utf-8') as f:
    header = parse_custom_row(f.readline().strip())
    for line in f:
        data.append(parse_custom_row(line.strip()))

df = pd.DataFrame(data, columns=header)

方法2:优化正则分隔符适配嵌套大括号

你之前使用的正则无法处理嵌套大括号场景,可替换为更健壮的规则,匹配不在未闭合大括号内的逗号:

import pandas as pd

df = pd.read_csv(
    file_name,
    delimiter=r',(?=(?:[^{}]*{[^{}]*})*[^{}]*$)',
    engine='python',
    index_col=False
)

这个正则会检查逗号后续内容的大括号是否成对闭合,确保不会拆分JSON内部的逗号。

方法3:指定字段引用规则

如果CSV中含JSON的列是用双引号包裹的,直接指定引用参数即可:

import pandas as pd
import csv

df = pd.read_csv(
    file_name,
    quotechar='"',
    quoting=csv.QUOTE_NONNUMERIC,  # 或csv.QUOTE_ALL,根据实际CSV格式选择
    index_col=False
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:39:34