如何在Python中使用re模块删除()

时间:2011-05-15 13:53:45

标签: python regex escaping backreference

我在处理XML文本方面遇到了麻烦。 我想从我的文本中删除(),如下所示:

<b>(apa-bhari(n))</b><b>apa-bhari(n)</b>

以下代码

name= re.sub('<b>\((.+)\)</b>','<b>\1</b>',name)

但这只能返回

<b></b>

我不了解转义序列和反向引用。请告诉我解决方案。

3 个答案:

答案 0 :(得分:2)

你需要使用raw strings,或者逃避斜杠:

name = re.sub(r'<b>\((.+)\)</b>', r'<b>\1</b>', name)

答案 1 :(得分:1)

如果后跟一个数字,你需要在Python字符串中转义反斜杠;以下表达式都是正确的:

assert '\1' == '\x01'
assert len('\\1') == 2
assert '\)' == '\\)'

所以,你的代码将是

name = re.sub('<b>\\((.+)\\)</b>','<b>\\1</b>',name)

或者,使用正则表达式字符串定义:

name = re.sub(r'<b>\((.+)\)</b>', r'<b>\1</b>',name)

答案 2 :(得分:1)

尝试:

name= re.sub('<b>\((.+)\)</b>','<b>\\1</b>',name)

或者如果您不希望在使用反斜杠的地方有\\的错误代码,请不要手动转义反斜杠,而是在字符串之前添加r,例如:{{1} }与r"myString\"相同。