解码带有隐藏控制字符的字符串

时间:2013-01-19 02:54:29

标签: python

我有一个包含隐藏控制字符的行的文件。示例行如下所示:

go!^Mbap^[<80>

^M^[<80>是隐藏的字符。当我打印线时,我没有看到这些字符。但是,如果我使用repr()函数,我可以看到这些字符由\x1b0表示。

如何将这些字符更改为我选择的unicode字符?

我尝试使用字符串模块translate()函数和正则表达式,但我似乎无法转换这些隐藏字符。

1 个答案:

答案 0 :(得分:0)

以下是如何使用str.translate和(下方)unicode.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'