我有这样的ASCII字符串:
'\\xaa\\xaa\\x02\\xba\\x04A\\xaa\\xaa\\x02\\xbc\\x05>\\xaa\\xaa\\x04\\x80\\x02\\xf8\\x00\\x85\\xaa\\xaa\\x04\\x80\\x02\\xf8'
我想将这些字符串转换为列表,其中列表的每个元素都是ASCII字符,字符的顺序和值从原始字符串中保存:
['\xaa', '\xaa', '\x02', '\xba', '\x04', 'A', '\xaa', '\xaa', '\x02', '\xbc', '\x05', '>', '\xaa', '\xaa', '\x04', '\x80', '\x02', '\xf8', '\x00', '\x85', '\xaa', '\xaa', '\x04', '\x80', '\x02', '\xf8']
如果每个字符都是\xa0
形式(表示十六进制字节),那么这不会太困难,但有时ASCII转义字符如\n
换行符和\\
反斜杠是包括在内。这抛弃了我写的转换器方法。
是否有一个简单的内置功能可以满足我的需求?或者我可以下载一些包吗?或者有人有简单的代码解决方案吗?
答案 0 :(得分:0)
你看起来有一个包含另一个字符串的Python表示的字符串。解码的一种方法是将codecs.decode()
与unicode_escape
encoding一起使用:
>>> s = '\\xaa\\xaa\\x02\\xba\\x04A\\xaa\\xaa\\x02\\xbc\\x05 ... \\x02\\xf8'
>>> import codecs
>>> t = codecs.decode(s, 'unicode_escape')
>>> t
'ªª\x02º\x04Aªª\x02¼\x05 ... \x02ø'
请注意,尽管可打印的非ASCII字符在此处按原样表示,而不是\xNN
转义,但它们与这些转义字面完全相同:
>>> 'ª' is '\xaa'
True
获得解码后的字符串t
后,将其转换为列表非常简单:
>>> list(t)
['ª', 'ª', '\x02', 'º', '\x04', 'A', 'ª', 'ª', '\x02', '¼', '\x05', ..., '\x02', 'ø']
但是:我不知道为什么你需要首先解码这个字符串。在很多情况下,传递repr(some_string)
的结果是有意义的,所以你可能有XY Problem。你应该考虑一下,不首先生成这些repr字符串会更有意义。