如何从混杂文本中提取所有<>包裹的内容并转换为列表?
提取
<>包裹内容的稳定实现方案 使用正则表达式的re.findall方法是这类场景的最优解,完全可以规避手动分割的各种兼容问题。
具体实现代码
import re # 测试用输入字符串 test_str = """Some text <item1><item2><item3> some more text some text <item4> some text """ # 正则匹配规则:捕获所有< >之间不为>的字符内容 pattern = r'<([^>]+)>' result = re.findall(pattern, test_str) print(result) # 输出:['item1', 'item2', 'item3', 'item4']
规则说明
- 正则模式
r'<([^>]+)>'中,[^>]+代表匹配1个及以上非>的字符,外层括号为捕获组,re.findall会直接返回所有捕获组的匹配结果,自动过滤掉外层的<>符号 - 该方案会自动忽略所有不在
<>包裹范围内的无关文本,也不受<>之间的空格、换行等字符影响,兼容性远高于手动分割 - 如果需要兼容内容为空的
<>,可将模式中的+替换为*,如果要进一步过滤空结果再加一层列表推导式即可:[i for i in re.findall(pattern, test_str) if i]
内容的提问来源于stack exchange,提问作者misosoup7
相关产品推荐
相关产品推荐

