2013-01-19 29 views
0

我有一個包含隱藏控制字符的行的文件。一個例子行看起來是這樣的:解碼帶有隱藏控制字符的字符串

go!^Mbap^[<80> 

^M^[,並且<80>隱藏字符。當我打印行時,我看不到這些字符。但是,如果我使用repr()函數,我可以看到這些字符表示爲\x1b0

如何將這些字符更改爲我選擇的unicode字符?

我試過使用字符串模塊translate()函數和正則表達式,但我似乎無法轉換這些隱藏的字符。

+0

你在linux上? – doru

+0

是的,我正在使用Linux機器。 – turtle

回答

0

下面是和(下)unicode.translate如何使用str.translate一個例子:

In [48]: import string 

In [49]: text = 'go!\x1b0' 

In [50]: text.translate(string.maketrans('\x1b\xa0','??')) 
Out[50]: 'go!?0' 

上述命令翻譯所有'\x1b''\xa0'爲問號。


或者,如果你想翻譯一個unicode字符串:

In [55]: text = 'go!\x1b0' 

In [56]: unitext = text.decode('latin-1') 

In [57]: unitext 
Out[57]: u'go!\x1b0' 

In [58]: unitext.translate({ord(u'\x1b'):ord(u'?')}) 
Out[58]: u'go!?0' 

如果你有超過一個性格比較來翻譯,它可能是更方便地定義表是這樣的:

In [59]: table = dict(zip(map(ord, u'\xb1\xa0'), map(ord, u'??'))) 

In [60]: unitext.translate(table) 
Out[60]: u'go!\x1b0'