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

正则表达式需求:拆分含转义引号的CSV格式字符串

带引号的CSV字符串拆分方案

正则表达式方法

如果一定要用正则实现,可以通过正向预查确保拆分的逗号不在成对引号内部,对应的正则表达式如下:

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

正则逻辑说明

  • ,:匹配目标拆分逗号
  • (?=(?:[^"]*"[^"]*")*[^"]*$):正向预查断言,验证从当前逗号到字符串末尾的引号数量为偶数,确保逗号不在未闭合的引号范围内

代码示例(Python)

import re

raw_str = '700,"some text, and more text",False,0000000000,text,"806,474.72"'
# 按符合条件的逗号拆分
split_result = re.split(r',(?=(?:[^"]*"[^"]*")*[^"]*$)', raw_str)
# 去除字段首尾的引号
cleaned_result = [item.strip('"') for item in split_result]

# 输出结果
for idx, content in enumerate(cleaned_result):
    print(f"[{idx}] {content}")

更可靠的非正则方法(推荐)

你处理的是标准CSV格式,用专门的CSV解析库比正则更稳妥,能自动处理转义引号、内嵌逗号等复杂场景。以Python内置csv模块为例:

代码示例

import csv
from io import StringIO

raw_str = '700,"some text, and more text",False,0000000000,text,"806,474.72"'
# 将字符串转为类文件对象供CSV读取器处理
csv_reader = csv.reader(StringIO(raw_str))
# 获取单行数据(输入为单条记录)
split_result = next(csv_reader)

# 输出结果
for idx, content in enumerate(split_result):
    print(f"[{idx}] {content}")

优势说明

  • 无需手动处理正则的边界情况(如字符串内的转义引号"He said ""Hi""")
  • 完全符合CSV格式规范,兼容性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:37:08