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

Python如何忽略引号内的逗号进行字符串分割?

处理这种带引号包裹含逗号字段的CSV行,不建议自己写split或简单正则,优先用Python内置的csv模块,能完美处理各种CSV格式边缘情况;如果一定要用正则,也可以实现。

方法一:使用csv模块(推荐)

Python的csv模块专门为解析CSV格式设计,自动识别引号内的逗号不做分割,还能处理转义引号等复杂场景。

代码示例:

import csv
from io import StringIO

# 假设s是你的多行内容列表
s = ['21467,dog,888,"apples,oranges,melons",777']

for line in s:
    # 将单行字符串转为类文件对象供csv.reader读取
    csv_reader = csv.reader(StringIO(line))
    # 读取当前行的解析结果
    parsed_line = next(csv_reader)
    print(parsed_line)

输出结果:
['21467', 'dog', '888', 'apples,oranges,melons', '777']

方法二:使用正则表达式

如果场景简单,也可以用正则匹配两种字段:被双引号包裹的内容,或者不含逗号和双引号的内容。

代码示例:

import re

# 正则匹配规则:要么匹配双引号内的内容,要么匹配非逗号的连续字符
pattern = re.compile(r'(?:"([^"]*)"|([^,]+))')
s = ['21467,dog,888,"apples,oranges,melons",777']

for line in s:
    # 找到所有匹配项
    matches = pattern.findall(line)
    # 合并匹配结果,过滤空值
    parsed_line = [item for group in matches for item in group if item]
    print(parsed_line)

输出结果和上面一致。

注意:正则方法无法处理字段内有转义双引号的情况(比如"I said ""yes""",foo),这种场景还是用csv模块更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:31:07