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

如何将Python中re.split与re.findall结果结合以保留分隔符

Python正则分割字符串并保留分隔符的解决方法

问题场景

我需要在Python中使用正则表达式分割字符串,同时保留作为分隔符的匹配项。当前使用re.split按\d+\.\d+\.\d+分割字符串得到列表:['oren;moish', '/-/v', '/barbi'],用re.findall获取到分隔符列表:['30.4.200', '6.99.5'],但不知如何将二者合并为目标列表:['oren;moish', '30.4.200', '/-/v', '6.99.5', '/barbi']。相关代码如下:

import re

s = "oren;moish30.4.200/-/v6.99.5/barbi"
print(re.split("\d+\.\d+\.\d+", s))
print(re.findall("\d+\.\d+\.\d+", s))

解决方案

方法一:利用带捕获组的re.split

这是最简洁的方式——给正则表达式加上捕获组(括号包裹),re.split会自动将分隔符匹配项也包含在返回的结果列表中:

import re

s = "oren;moish30.4.200/-/v6.99.5/barbi"
# 用原始字符串r""避免转义问题,括号将分隔符设为捕获组
result = re.split(r"(\d+\.\d+\.\d+)", s)
print(result)
# 输出: ['oren;moish', '30.4.200', '/-/v', '6.99.5', '/barbi']

方法二:手动合并分割结果与分隔符列表

如果已经分别得到了分割后的内容列表和分隔符列表,可以通过遍历交替拼接的方式合并:

import re

s = "oren;moish30.4.200/-/v6.99.5/barbi"
parts = re.split(r"\d+\.\d+\.\d+", s)
separators = re.findall(r"\d+\.\d+\.\d+", s)

result = []
# 交替添加分割部分和分隔符
for part, sep in zip(parts, separators):
    result.append(part)
    result.append(sep)
# 添加最后一个分割部分(没有后续分隔符)
result.append(parts[-1])

print(result)
# 输出: ['oren;moish', '30.4.200', '/-/v', '6.99.5', '/barbi']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:05:26