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

Python如何按多种分隔符及其任意组合拆分字符串得到非空结果

解决方案

你遇到的核心问题是原有正则仅匹配单个分隔符,连续多个分隔符就会拆分出空字符串,不需要枚举所有分隔符组合,有两种非常简便的实现方式:

方案1:优化re.split的正则规则

给分隔符的匹配规则加上+量词,代表匹配1个或多个连续的分隔符,连续的多组分隔符会被当做一个整体拆分,再过滤掉可能存在的首尾空字符串即可:

import re
x = "121, 1238,\nxyz,\n 123abc \n\rabc123"
result = [item for item in re.split(r'[,\n\r\s]+', x) if item]

输出结果:

['121', '1238', 'xyz', '123abc', 'abc123']

方案2:用re.findall直接提取目标内容

反过来思考,你需要的是所有不属于分隔符的连续字符,直接用反向匹配规则提取即可,不需要额外处理空字符串:

import re
x = "121, 1238,\nxyz,\n 123abc \n\rabc123"
result = re.findall(r'[^,\n\r\s]+', x)

输出结果和上面完全一致。

说明:正则里的[]是字符集,匹配内部任意一个字符;+代表匹配前一个规则1次及以上;[^xxx]是反向字符集,匹配所有不属于内部指定的字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:39:03