2016-08-11 30 views
1

は、私は元の形に戻ってエスケープ文字を変換したい:Pythonの逆エスケープ文字

>>> myString="\\10.10.10.10\view\a" 
>>> myString 
'\\10.10.10.10\x0biew\x07' 
>>>desiredString=fun(myString) 
>>>print desiredString 
'\\10.10.10.10\view\a' 

私は非常に多くのことを研究し、私はのpython2.6を使用しています 解決策を見つけることができませんでした。

+0

の可能性のある重複した[?私はPythonでバックスラッシュでエスケープされた文字列をアンエスケープするにはどうすればよい](http://stackoverflow.com/questions/1885181/how-do-i-un-escape-a-backslash-escaped-string-in-python) –

答えて

0
myString=r"\\10.10.10.10\view\a" 
myString 
'\\\\10.10.10.10\\view\\a' 
print myString 
\\10.10.10.10\view\a 

rは '...' バイト文字列

+1

あまりありません。 'r '...''は生の文字列リテラルです。 Python 2では、すべての非Unicode文字列はバイト文字列です。 –

0

\v\a印刷中にスペシャルキャラクタとして解釈されています。心配しないで、これを避けるために別のバックスラッシュを追加するだけです。

>>> myString="\\10.10.10.10\\view\\a" 
>>> print(myString) 
\10.10.10.10\view\a 

編集: またはreprを使用します。

>>> myString=r"\\10.10.10.10\view\a" 
>>> print myString 
\\10.10.10.10\view\a 
+0

私はサーバーからmyStringを読み込みましたが、割り当て中に編集することはできません。また >>> repr(myString) "\\\\ 10.10.10.10 \\ x0biew \\ x07 '" –

+0

はい、私はそれにもかかわらずしませんでした。そして、@ BPLの答えがそれを行う唯一の方法です。 –

1

あなたはこれらのポストの変換を避けると思いますので、理想的には、Pythonの組み込み文字列関数を使用する必要があるか、正しく入力されたデータを解析します。実際には、これらのカスタムソリューションが全く奨励されていないが、ここであなたが行く:

def fun(input_str): 
    cache = { 
     '\'':"\\'", 
     '\"':'\\"', 
     '\a':'\\a', 
     '\b':'\\b', 
     '\f':'\\f', 
     '\n':'\\n', 
     '\r':'\\r', 
     '\t':'\\t', 
     '\v':'\\v' 
    } 

    return "".join([cache.get(m,m) for m in list(input_str)]) 

tests = [ 
    "\\10.10.10.10\view\a", 
    "\'", 
    '\"', 
    '\a', 
    '\b', 
    '\f', 
    '\n', 
    '\r', 
    '\t', 
    '\v' 
] 

for t in tests: 
    print repr(t)," => ",fun(t)