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

Python使用re.split按引号外逗号分割字符串的实现方法

Python 按引号外逗号分割字符串实现

可直接运行的代码

import re

string = "\"Hello, \", 'world!'"
# 匹配引号外侧的逗号,忽略引号内部的逗号
split_reg = r',\s*(?=(?:[^"\']*["\'][^"\']*["\'])*[^"\']*$)'
split_res = re.split(split_reg, string)
# 清理每个分段首尾的引号、多余空白
final_res = [seg.strip().strip('"\'') for seg in split_res]

print(final_res)

运行后输出完全符合预期:

['Hello, ', 'world!']

正则规则说明

  • 匹配基础部分是,\s*:匹配逗号本身,以及逗号后面可能跟着的空白字符,避免分割后的分段带前置多余空格
  • 后面跟的正向预查规则(?=(?:[^"\']*["\'][^"\']*["\'])*[^"\']*$)不消耗原字符串内容,只做合法性校验:要求当前匹配到的逗号位置到字符串末尾,单引号、双引号的总数都是偶数,证明这个逗号没有落在任何引号包裹的内容内部,才会被判定为分隔符
  • 分割完成后通过列表推导式,统一去掉每个分段首尾的空白、外层包裹的单/双引号,得到干净的结果

适用边界

当前写法支持单引号、双引号独立包裹内容的常规场景,默认引号成对出现、不存在引号嵌套。如果需要处理带转义符的引号(比如字符串内写"say \"hi, man\"这类带转义引号的内容),只需要在正则的字符匹配部分补充转义符的判断逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:09:21