2016-08-11 20 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

的可能的複製[?我如何取消逃避蟒蛇反斜線轉義字符串(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)