我有一個noob問題。關於來自postgresql的反斜槓
我有,看起來像「\ 1ABC」
然後我用這個字符串作爲一個正則表達式替換re.sub("([0-9])",thereplacement,"2")
我用反斜槓有點糊塗了一個表中的記錄。我回來的字符串是"\\1abc"
我有一個noob問題。關於來自postgresql的反斜槓
我有,看起來像「\ 1ABC」
然後我用這個字符串作爲一個正則表達式替換re.sub("([0-9])",thereplacement,"2")
我用反斜槓有點糊塗了一個表中的記錄。我回來的字符串是"\\1abc"
您是否正在使用python interactivly?
在常規字符串中,您需要在代碼中轉義反斜槓,或者使用r「...」(鏈接到docs)。如果您正在運行python interactivly並且不將數據庫中的結果分配給一個變量,它將使用它的__repr__()
方法打印出來。
>>> s = "\\1abc"
>>> s
'\\1abc' # <-- How it's represented in Python code
>>> print s
\1abC# <-- The actual string
此外,您的re.sub有點奇怪。 1)也許你的意思是[0-9]作爲模式? (匹配一個數字)。如果您的輸入是thereplacement
,則參數可能也會啓用。這是語法:
re.sub(pattern, repl, string, count=0)
所以我的猜測是,你希望是這樣的:
>>> s_in = yourDbMagic() # Which returns \1abc
>>> s_out = re.sub("[0-9]", "2", s_in)
>>> print s_in, s_out
\1abc \2abc
編輯:試圖更好地解釋逃逸/表示。
請注意,您可以通過將「standard_conforming_strings」設置爲「打開」來停止作爲轉義字符。
我同意:使用standard_conforming_strings = on是要走的路。順便說一句:這是現在9.0的默認值。 – 2010-11-21 16:56:22
我編輯了我的子字符串。那裏一個粗心的錯誤。那麼,我試圖取而代之的是「2」。哦,我沒有交互式地使用python。 – goh 2010-11-21 15:45:50