2011-03-02 78 views

回答

1

根據re.sub documentation,反斜槓是替換中唯一的「特殊」字符。

這裏只有一個明顯辦法做到這一點,再加上無明顯的,但記錄方式:

>>> repl = r"foo\1bar\2zot" 
>>> re.sub(r".*", repl, "frobozz") 
Traceback (most recent call last): 
[snip] 
sre_constants.error: invalid group reference 
>>> re.sub(r".*", repl.replace("\\", "\\\\"), "frobozz") 
'foo\\1bar\\2zot' 
>>> re.sub(r".*", lambda z: repl, "frobozz") 
'foo\\1bar\\2zot' 
>>> 
2

是不是repl = repl.replace('\\','\\\\')就夠了?

+0

我想是這樣。我可以肯定這一點?替換字符串中除了反斜槓還有其他魔法字符嗎? – 2011-03-02 19:24:38

+0

+1。正如@sln所說,還有'\ g '語法,但是也可以避開反斜槓。 – 2011-03-03 01:33:50