2010-11-19 16 views
0

私は質問があります。postgresqlのバックスラッシュに関して

私はバックスラッシュで少し混乱している私は、re.sub("([0-9])",thereplacement,"2")

で正規表現の代替として、この文字列を使用する「\の1abc」

のように見えるテーブルのレコードを持っています。私が戻った文字列は"\\1abc"

答えて

2

です。あなたは対話的にpythonを使っていますか?

通常の文字列では、コード内でバックスラッシュをエスケープするか、r "..."を使用する必要があります(docsへのリンク)。対話的にPythonを実行していて、データベースの結果を変数に代入しない場合は、__repr__()メソッドを使用して出力されます。

>>> s = "\\1abc" 
>>> s 
'\\1abc' # <-- How it's represented in Python code 
>>> print s 
\1abC# <-- The actual string 

また、あなたのre.subは少し奇妙です。 1)あなたはパターンとして[0-9]を意味するのでしょうか? (1桁の一致)。引数はおそらくthereplacementがあなたの入力であるならば、おそらくswitcheです。これは、構文は次のとおりです。

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

2

standard_conforming_stringsをonに設定すると、\ stopをエスケープ文字にすることができます。

+0

私は同意します:standard_conforming_strings = onを使用して行くことです。 Btw:9.0のデフォルトです。 –

関連する問題