Python拆分字符串保留分隔符,re.split正则写法报错问题求解
问题原因
你的正则表达式写法存在量词作用范围错误:
你写的(__label__{1,2}:)中,{1,2}量词仅作用于它前面紧邻的最后一个_字符,该正则实际匹配的是__label_:(1个末尾下划线)或__label__:(2个末尾下划线)的格式,完全没有覆盖你实际场景中__label__后面跟随的数字部分,所以正则匹配不到任何内容,split操作直接返回了原字符串。
修正方案
你需要匹配__label__后跟随任意位数的数字,再加冒号的格式,正则调整如下:
import re line = "__label__2:somedata" # 正则说明:__label__ 固定前缀 + \d+ 匹配1位及以上数字 + : 冒号,括号包裹保留分隔符 p = re.split(r"(__label__\d+:)", line) # 过滤split生成的开头空字符串 result = [item for item in p if item] print(result) # 输出:['__label__2:', 'somedata']
该写法也兼容你提到的多位数标签场景,比如输入__label__43:somedata也会输出['__label__43:', 'somedata']。
内容的提问来源于stack exchange,提问作者cehalon798
相关产品推荐
相关产品推荐

