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

如何在useDelimiter()方法中规避引号并正确分割带引号的CSV内容?

处理带引号的CSV格式数据,提取结构化对象

需求背景

我有一个存储特定格式内容的文件,示例内容如下:

"Dude1", 17, student
Dude2, 23, worker
"Dude, Dude", 11, student

需要从中提取结构化对象,期望输出如下:

Object1:
name: Dude1
age: 17
work: student

Object2:
name: Dude2
age: 23
work: worker

Object3:
name: Dude, Dude
age: 11
work: student

已知需用正则表达式作为分隔符,但不清楚具体写法,请问应使用何种分隔符来避免保留引号且不拆分引号内的字符串?

解决方案

你可以使用匹配**引号外部逗号(含前后空格)**的正则作为分隔符,同时配合简单的字符串处理去掉引号。

核心正则分隔符

\s*,\s*(?=(?:[^"]*"[^"]*")*[^"]*$)

正则解释

  • \s*,\s*:匹配逗号以及前后任意数量的空格,兼容数据里的空格格式
  • (?=(?:[^"]*"[^"]*")*[^"]*$):正向预查逻辑,确保当前逗号后面的引号总数是偶数——也就是说,这个逗号不在成对引号的内部,不会拆分引号里的内容

后续处理(以Python为例)

拆分后只需对字段做个简单的引号去除处理,就能得到干净的内容:

import re

# 读取每行数据示例
lines = [
    '"Dude1", 17, student',
    'Dude2, 23, worker',
    '"Dude, Dude", 11, student'
]

for idx, line in enumerate(lines, 1):
    # 用正则拆分字段
    fields = re.split(r'\s*,\s*(?=(?:[^"]*"[^"]*")*[^"]*$)', line)
    # 去掉字段两端的引号(如果有的话)
    name, age, work = [f.strip('"') for f in fields]
    # 输出目标格式
    print(f"Object{idx}:")
    print(f"name: {name}")
    print(f"age: {age}")
    print(f"work: {work}\n")

运行这段代码就能得到你期望的输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:41:34