Python中如何按(a)、(b)至(z)格式的分隔符拆分字符串得到目标列表
实现方案
你原来用string.split("()")无法生效的原因是这个写法只会匹配连续的()字符,既不能识别(a)这类带字母的标记,也不会保留标记作为拆分后元素的一部分。
可以用Python正则模块re的findall方法实现需求,代码如下:
import re string = """(a) first string (b) second (string) (c) third string""" # 正则匹配所有以(a)~(z)格式开头的分段 result = re.findall(r'\([a-z]\).*?(?=\n\([a-z]\)|$)', string) print(result)
运行输出结果:
['(a) first string', '(b) second (string)', '(c) third string']
注:你给出的期望输出末尾多了一个多余的右括号,属于笔误,以上结果为实际正确输出。
如果需要适配其他场景可以调整正则规则:
- 如果标记支持大写字母,把正则里的
[a-z]改成[a-zA-Z] - 如果分段内容允许内部换行,给
findall加第三个参数re.DOTALL,让.可以匹配换行符
内容的提问来源于stack exchange,提问作者ayansalt2
相关产品推荐
相关产品推荐

