2016-01-07 24 views
1

我試圖用Python語言編寫一個正則表達式,我希望與\\n替換轉義字符像\n\t等,\\t以\牛逼替換轉義字符,像 n t等,\ñ

我試過這個只是逃避換行符和製表符。

re.sub(r'\t',r'\\t',re.sub(r'\n',r'\\n',text)) 

如:

>>> print re.sub(r'\t',r'\\t',re.sub(r'\n',r'\\n','ads;lfkjaldsf\ndsklajflad\tkjhklajf\n')) 
ads;lfkjaldsf\ndsklajflad\tkjhklajf\n 

假設我有文字說"\a\b\c\d\n\g\h\t"則不需要雙反斜線添加到非轉義字符。

所以在這裏我不需要用雙反斜槓來轉義每個反斜槓,但是每個具有雙反斜槓的特殊轉義字符都可以。

任何幫助表示讚賞。

+4

_「會做簡單的工作嗎?」_當你嘗試它時它工作嗎? – Kevin

+2

你可以在這個答案中列出他們所有的人:http://stackoverflow.com/a/18935765/650405 –

回答

2

我發現如Karoly Horvath指出的re.escape。這是它的工作原理。

>>> re.escape('ads;lfkjaldsf\ndsklajflad\tkjhklajf\n') 
'ads\\;lfkjaldsf\\\ndsklajflad\\\tkjhklajf\\\n' 

更新:

當我看到re.escape逃脫了很多太多。空格,分號和許多不需要在我的情況下逃脫的角色。

>>> re.sub(r'(\n|\t|\"|\')',lambda m:{'\n':'\\n','\t':'\\t','\'':'\\\'','\"':'\\\"'}[m.group()], "hello hi \n \'GM\' \t TC \n \"Bye\" \t") 
'hello hi \\n \\\'GM\\\' \\t TC \\n \\"Bye\\" \\t' 

這就是我想通了哪些幫助。