2010-11-19 36 views
0

我有一個noob問題。關於來自postgresql的反斜槓

我有,看起來像「\ 1ABC」

然後我用這個字符串作爲一個正則表達式替換re.sub("([0-9])",thereplacement,"2")

我用反斜槓有點糊塗了一個表中的記錄。我回來的字符串是"\\1abc"

回答

2

您是否正在使用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 

編輯:試圖更好地解釋逃逸/表示。

+0

我編輯了我的子字符串。那裏一個粗心的錯誤。那麼,我試圖取而代之的是「2」。哦,我沒有交互式地使用python。 – goh 2010-11-21 15:45:50

2

請注意,您可以通過將「standard_conforming_strings」設置爲「打開」來停止作爲轉義字符。

+0

我同意:使用standard_conforming_strings = on是要走的路。順便說一句:這是現在9.0的默認值。 – 2010-11-21 16:56:22