如果字符不属于Python中的一组匹配模式,则删除字符串中的字符

时间:2015-12-29 00:16:31

标签: python regex

如果我有一个字符串,它包含很多单词。如果字符串中的单词不以_开头,我想删除右括号。

示例输入:

this is an example to _remove) brackets under certain) conditions.

输出:

this is an example to _remove) brackets under certain conditions.

如果不使用re.sub分割单词,我怎么能这样做?

2 个答案:

答案 0 :(得分:6)

re.sub接受一个callable作为第二个参数,在这里派上用场:

>>> import re
>>> s = 'this is an example to _remove) brackets under certain) conditions.'
>>> re.sub('(\w+)\)', lambda m: m.group(0) if m.group(0).startswith('_') else m.group(1), s)
'this is an example to _remove) brackets under certain conditions.'

答案 1 :(得分:2)

当列表理解能够做到时,我不会在这里使用正则表达式。

HttpListenerContext

如果你有可能的输入:

result = ' '.join([word.rstrip(")") if not word.startswith("_") else word
                   for word in words.split(" ")])

你要变成:

someword))

然后你必须这样做:

someword)