如何使用Python正则表达式移除<>符号间的所有文本?
用Python正则移除尖括号包裹内容的解决方案
没问题,这事儿用Python的re模块就能轻松搞定!核心思路就是匹配所有<和>之间的内容,然后将其替换为空字符串。
具体实现代码
import re # 原句子 original_sentence = "<S>Today is a <unk> sunny day and <num> children are playing outside </S>" # 正则表达式:匹配所有<开头、>结尾的内容 pattern = r'<[^>]+>' # 替换匹配到的内容为空字符串 cleaned_sentence = re.sub(pattern, '', original_sentence) # 去除可能存在的多余空格(可选优化) cleaned_sentence = re.sub(r'\s+', ' ', cleaned_sentence).strip() print(cleaned_sentence)
代码细节解释
- 正则表达式
r'<[^>]+>':<精准匹配左尖括号;[^>]+匹配任意不是右尖括号的字符(^在方括号里表示取反,+确保至少匹配一个字符),这样不会误匹配跨多个尖括号的内容;>匹配右尖括号,完整锁定一对尖括号包裹的区域。
- 最后一步的空格处理是可选操作:替换后可能出现连续空格(比如原句中
<unk>前后的空格会变成a sunny),这一步能把连续空格合并成单个,同时去除首尾多余空格,让结果更整洁。
运行结果
执行代码后,输出正好是你想要的效果:
Today is a sunny day and children are playing outside
如果你的句子里没有嵌套的尖括号(比如<a<b>>这种复杂场景),这个方案完全够用。要是遇到嵌套情况,再调整正则逻辑就行,但从你的示例来看,这个简单正则就完美解决问题啦!
内容的提问来源于stack exchange,提问作者Crista23




