2011-06-23 15 views
7

Python文字列で "with \"をどのように置き換えるのですか?Python - string.replaceを使用して二重引用符をエスケープする

私は二重引用符で文字列を持っている:私は1つのバックスラッシュと二重引用符をエスケープしたい

s = 'a string with "double" quotes' 

を。

次の操作を行うことなく、かなりの作業を行い、それは2つのバックスラッシュでエスケープ:

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のバックスラッシュを見ることができませんが、バックスラッシュは、文字列のままに:も参照してください。 同じ文字列の長さを確認すると答えが表示されます。 また、新しい文字列を再度二重引用符で置き換えると、元の文字列が得られます。

1

これは私の仕事でした。

s.replace('"', '\\"') 
関連する問題