2011-06-23 60 views
7

如何用python字符串替換「with \」?Python - 使用string.replace轉義雙引號

我有雙引號的字符串:

s = 'a string with "double" quotes' 

我想用一個反斜槓轉義雙引號。

執行以下操作,完全不是那麼回事,它避開了與兩個反斜槓:

s.replace('"', '\\"') 
'a string with \\"double\\" quotes' 

打印該字符串的輸出顯示我想要的東西。 但我不只是想打印正確的字符串,我希望它保存在一個變量中。 任何人都可以用正確的魔法正則表達式來幫助我嗎?

回答

8

字符串正確。但是repr將使用反斜槓自身來顯示不可打印的字符,並且爲了保持一致性(它應該形成一個Python字符串字面值,當計算結果返回到輸入爲repr的字符串時)也會轉義發生在串。

請注意,這是一個相當有限的轉義算法。根據您的需要,您可能需要大幅擴展(或者有現成的解決方案,例如使用數據庫時的預備紅外語句)

8

您的初始嘗試工作得很好。你看到的雙反斜槓只是顯示實際在字符串中的單個反斜槓的一種方式。另請參閱:__repr__()

>>> s = 'a string with "double" quotes' 
>>> ss = s.replace('"', '\\"') 
>>> len(s) 
29 
>>> len(ss) 
31 
0

無法看到一個反斜槓,但反斜槓保留在字符串中。 如果你將檢查相同的字符串的長度,你將能夠看到答案。 另外,如果您將用雙引號再次替換新字符串,則會得到原始字符串。

1

這爲我做了這份工作。

s.replace('"', '\\"')