使用正则表达式:
>>> import re
>>> s = '<@ """@$ FSDF >something something <more noise>'
>>> re.sub('<[^>]+>', '', s)
'something something '
[更新]
如果您尝试过类似的模式<.+>
,其中的点表示任何字符,而加号表示一个或多个,则您知道它不起作用。
>>> re.sub(r'<.+>', s, '')
''
为什么!?!这是因为正则表达式默认情况下是“贪婪的”。该表达式将匹配字符串之前的所有内容,包括>
-,这不是我们想要的。我们要匹配<
并在下一个处停止>
,因此我们使用的[^x]
模式表示“除x外的任何字符”(x为>
)。
该?
操作者接通比赛“非贪婪”,所以这有同样的效果:
>>> re.sub(r'<.+?>', '', s)
'something something '
前一个是更明确的,这个是更少的输入;请注意,这x?
意味着x出现零次或一次。