转义 re.sub 的 repl 参数

Fli*_*imm 5 python regex

我想确保 的repl参数re.sub是转义,以便\1不会解释任何特殊序列:

>>> repl = r'\1'
>>> re.sub('(X)', repl, 'X')
'X'
>>> re.sub('(X)', desired_escape_function(repl), 'X')
'\\1'
Run Code Online (Sandbox Code Playgroud)

有没有可以做到这一点的功能?我知道re.escape存在,应该使用它吗?

Fli*_*imm 6

请勿re.escape用于此目的。re.escape意在用于pattern论证中,而不是用于repl论证中。

相反,请遵循Python 文档的建议,只需手动将所有反斜杠替换为两个反斜杠:

>>> repl = r'\1'
>>> re.sub('(X)', repl.replace('\\', '\\\\'), 'X')
'\\1'
Run Code Online (Sandbox Code Playgroud)