2017-04-17 16 views
2

私はpythonでファイルパスを保持するために刺し傷を使用していますが、単一のバックスラッシュをcmdで使用するために二重バックスラッシュに置き換えたいのですが、バックスラッシュのために特殊文字文字。たとえば、次のようにPythonのファイルパスを処理する

string="C:\Program Files (x86)\Mozilla Firefox\firefox.exe" 
print(sting) 

出力:

"C:\Program Files (x86)\Mozilla Firefox\x0cirefox.exe" 

私は出力

"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" 

にそれをしたいとき、私は "\\" と "\" を交換したい場合、この問題が続きますを使用します。

string.replace("\\","\\\\") 

出力する代わりに

"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" 

これは、出力:

"C:\\Program Files (x86)\\Mozilla Firefox\xocirefox.exe" 
+2

[Oblig。 xkcd](https://xkcd.com/1638/) –

答えて

1

使用生の文字列ではこのについての詳細を調べることができます。

>>> string=r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" 
>>>print(string) 
C:\Program Files (x86)\Mozilla Firefox\firefox.exe 

>>> print(string.replace('\\','\\\\')) 
C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe 
1

あなたは単にバックスラッシュを無視するように、生の文字列を使用することができます。

>>> string=r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" 
>>> print(string) 
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" 

あなたはPython documentation for lexical analysis

+0

これは私の問題を解決しました。 – Nat

+0

文字列を保持する変数を生の文字列に変換するにはどうすればよいですか? – Nat

+0

"生の文字列"は、ソースコードに_literals_という文字列を入力するための構文機能に過ぎません。 Pythonオブジェクトレベルでは違いはありません。 –