0

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

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

制作了以下代码

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

但这只能返回

<b></b>

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

4

3 回答 3

2

您需要使用原始字符串,或转义斜杠:

name = re.sub(r'<b>\((.+)\)</b>', r'<b>\1</b>', name)
于 2011-05-15T14:01:40.283 回答
1

尝试:

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

或者,如果您不想\\在使用反斜杠的任何地方都有不清晰的代码,请不要手动转义反斜杠,而是r在字符串之前添加一个,例如:r"myString\""myString\\".

于 2011-05-15T13:59:56.387 回答
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)
于 2011-05-15T13:58:57.367 回答