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

如何正确读取包含JSON字段内部分隔符的CSV文件?

解决CSV中JSON字段包含分隔符的读取问题

遇到这种分隔符不小心出现在字段内部JSON里的情况确实挺闹心的,不过咱们可以通过两个关键步骤轻松搞定:

步骤1:处理HTML转义的引号

你的原始数据里用的是"(HTML转义后的双引号),首先得把它替换成实际的双引号",这样后续才能正确识别引号的位置,区分字段内的内容和真正的分隔符。

步骤2:用正则匹配「不在引号内的分隔符」

Pandas的read_csv支持用正则表达式作为分隔符,我们可以写一个精准的正则,只拆分那些不在成对双引号内的|,这样JSON字符串里的|就不会被误当成分隔符拆分了。

修改后的完整代码

from io import StringIO
import pandas as pd

# 先把HTML转义引号替换成实际双引号
raw_data = 'col1|{"a":"1","b":"2|3","c":"4"}'
processed_data = raw_data.replace('"', '"')

# 使用正则分隔符,仅拆分不在双引号内的|,需指定python引擎(C引擎不支持正则分隔符)
df = pd.read_csv(
    StringIO(processed_data),
    header=None,
    sep=r'(?=(?:[^"]*"[^"]*")*[^"]*$)\|',
    engine='python'
)

print(df)

结果验证

运行后你会得到完全符合预期的两列结果:

0                                        1
0  col1  {"a":"1","b":"2|3","c":"4"}

补充说明

  • 正则表达式(?=(?:[^"]*"[^"]*")*[^"]*$)\|的逻辑是:匹配的|后面必须跟着偶数个双引号,确保这个分隔符不在任何一对引号内部,完美避开JSON里的嵌套引号内容。
  • 必须指定engine='python',因为默认的C引擎不支持正则作为分隔符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:04:06