我有一个包含隐藏控制字符的行的文件。示例行如下所示:
go!^Mbap^[<80>
^M
,^[
和<80>
是隐藏的字符。当我打印线时,我没有看到这些字符。但是,如果我使用repr()
函数,我可以看到这些字符由\x1b0
表示。
如何将这些字符更改为我选择的unicode字符?
我尝试使用字符串模块translate()
函数和正则表达式,但我似乎无法转换这些隐藏字符。
答案 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'