Python如何按方括号[]拆分字符串并保留括号内容到列表
解决方案
直接使用Python正则模块re的split()方法即可实现需求,核心逻辑是用带捕获组的正则表达式匹配所有被方括号包裹的内容,re.split()会自动将捕获到的分隔符也插入到结果列表中,最后过滤掉空字符串即可。
完整代码示例
import re # 注意不要用str作为变量名,会覆盖Python内置字符串类型 origin_str = "I wish to have a[dancing marshmellow]cat,[becase I am the]best loki joki ipock" # 正则说明:(\[.*?\]) 匹配所有被[]包裹的内容,外层括号是捕获组,会保留匹配到的方括号内容 result = [i for i in re.split(r'(\[.*?\])', origin_str) if i] print(result)
运行输出
['I wish to have a', '[dancing marshmellow]', 'cat,', '[becase I am the]', 'best loki joki ipock']
原方法问题说明
你之前直接用str.split("[")只会按[切割字符串,既不会保留分隔符,也不会匹配闭合的],所以无法得到预期结果。正则中使用的.*?是非贪婪匹配规则,可以保证只会匹配到最近的],不会把多段方括号内容合并。
内容的提问来源于stack exchange,提问作者NoamAtias
相关产品推荐
相关产品推荐

