2014-01-21 31 views
1

我有一個字符串This is a Test和傳遞的參數s。 我該如何逃避第一個字符串的所有s字符?如何轉義字符串的某些字符?

應該導致Thi\s i\s a Te\sT

我想它是這樣的:

rstr = rstr.replace(esc, r"\\" + esc) 

但它會導致\\每個s

+0

實際上,使用'「\\」'而不是'r「\\」'。將它作爲原始字符串意味着\\確實變成了\\,但您仍然無法用一個反斜槓結束一個字符串。 – RemcoGerlich

回答

2

r'\\'產生之前字面雙反斜線:

>>> r'\\' 
'\\\\' 

不要在這裏使用原始字符串,只需使用'\\'

>>> 'This is a Test'.replace('s', '\\s') 
'Thi\\s i\\s a Te\\st' 

不要混淆價值的Python表示。爲了方便調試和往返,Python解釋器使用repr()函數來回顯結果。

的字符串repr()使用Python的文字符號,包括逃避任何反斜線:

>>> r'\s' 
'\\s' 
>>> len(r'\s') 
2 
>>> print r'\s' 
\s 

實際只包含一個反斜槓,但由於反斜槓可以開始擁有特殊意義的字符,如\n (換行符)或\x00(空字節),它們表示已轉義,因此您可以直接將該值粘貼回解釋器。

相關問題