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

如何在Python中使用re模块删除(),python,regex,escaping,backreference,Python,Regex,Escaping,Backreference,我在处理XML文本方面遇到了麻烦。 我想从我的文本中删除()如下: 从(apa bhari(n))到apa bhari(n) 制定了以下代码 name= re.sub('<b>\((.+)\)</b>','<b>\1</b>',name) name=re.sub('\(.+)\'),'\1',name) 但这只能是回报 <b></b> 我不理解转义序列和反向引用。请告诉我解决方案。如果后跟数字,则需要在Python

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

(apa bhari(n))
apa bhari(n)

制定了以下代码

name= re.sub('<b>\((.+)\)</b>','<b>\1</b>',name)
name=re.sub('\(.+)\'),'\1',name)
但这只能是回报

<b></b>


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

如果后跟数字,则需要在Python字符串中转义反斜杠;以下表达式均为真:

assert '\1' == '\x01'
assert len('\\1') == 2
assert '\)' == '\\)'
所以,你的代码应该是

name = re.sub('<b>\\((.+)\\)</b>','<b>\\1</b>',name)
name=re.sub('\\(.+)\\\'),'\\1',name)
或者,使用正则表达式字符串定义:

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

如果后跟数字,则需要在Python字符串中转义反斜杠;以下表达式均为真:

assert '\1' == '\x01'
assert len('\\1') == 2
assert '\)' == '\\)'
所以,你的代码应该是

name = re.sub('<b>\\((.+)\\)</b>','<b>\\1</b>',name)
name=re.sub('\\(.+)\\\'),'\\1',name)
或者,使用正则表达式字符串定义:

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

name=re.sub('\(.+)\'),'\\1',name)
或者,如果您不希望在使用反斜杠的任何地方都有一个不可读的代码,请不要手动退出反斜杠,而是在字符串之前添加一个
r
,例如:
r“myString\”
“myString\”
相同,请尝试:

name=re.sub('\(.+)\'),'\\1',name)
或者,如果您不希望在使用反斜杠的任何地方都有一个不可读的代码,请不要手动转义反斜杠,而是在字符串之前添加一个
r
,例如:
r“myString\”
与您需要使用的
“myString\”
相同,或者转义斜杠:

name = re.sub(r'<b>\((.+)\)</b>', r'<b>\1</b>', name)
name=re.sub(r'\(.+)\'),r'\1',name)
您需要使用或退出斜杠:

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

不,他想转义括号,所以
\(
可以,而不是
\(
@boudo
'\\)('
[(]
相同,即匹配括号。
'\(“
返回默认转义。您的参数适用于以
r'
开头的regexp字符串。非常感谢。这也可以返回我想要的结果。@boudou是的,这正是我试图说的,它返回默认转义规则。不,他想要转义括号,所以
\(
可以,而不是
\\(
@boudo
'\\('
[(]
)相同,即匹配括号。
'\(“
返回默认转义。您的参数适用于以
r'
开头的regexp字符串。非常感谢。这也可以返回我想要的结果。@boudou是的,这正是我试图说的,它返回默认转义规则。不要对第一个字符串使用原始字符串,因为
\\(
不正确,
\(
不正确。@boudou-实际上,您也需要转义反斜杠-正则表达式引擎需要查看
\(
),因此字符串应该是
'\\('
,或
r'\('
):谢谢!我不知道原始字符串的用法。不要对第一个字符串使用原始字符串,因为
\\(
不正确,
\(
正确。@boudou-实际上,您还需要转义该反斜杠-正则表达式引擎需要看到
\(
),因此字符串应该是
'\\('
r'\(“
:谢谢!我不知道原始字符串的用法。@ThiefMaster:并不是每个人的母语都是英语,并且能够正确、完整地表达他想说的话(因为英语对我来说是第二语言,我也经常遇到困难)。对我来说,听起来好像他不(想)说理解这些事情背后的原则。@ThiefMaster:并不是每个人都以英语为母语,并且能够正确、完整地表达他想说的话(因为英语对我来说是第二语言,我也经常遇到困难)。对我来说,听起来好像他不(想)理解这些事情背后的原则。