从字符串中删除双转义字符并使其成为二进制

时间:2016-10-18 16:01:30

标签: string python-3.x binary

我有一个字符串看起来像这样:

"\\xd6\\x83\\x8dd!VT\\x92\\xaaA\\x05\\xe0\\x9b\\x8b\\xf1"

我想删除双转义字符,以使其成为一个合适的二进制文件。这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

想出来了!

我无法删除第二个反斜杠,无论如何。我搜索了一下,然后找到了解决方案:

1)使用unicode_escape库使用codecs解码字符串,以便摆脱第二个反斜杠

2)用ISO-8859-1对步骤1的输出进行编码,以便再次获得二进制文件

import codecs
>>> string_with_double_backslashes = '\\xd6\\x83\\x8dd!VT\\x92\\xaaA'
>>> string_with_single_backslashes = codecs.decode(string_with_double_backslashes, 'unicode_escape')                        
>>> binary_with_single_backslashes = string_with_single_backslashes.encode('ISO-8859-1')
>>> binary_with_single_backslashes
b'\xd6\x83\x8dd!VT\x92\xaaA'

答案 1 :(得分:1)

源字符串看起来很像bytes字符串,因此您可以这样做:

>>> import ast
>>> s = "\\xd6\\x83\\x8dd!VT\\x92\\xaaA\\x05\\xe0\\x9b\\x8b\\xf1"
>>> print(ast.literal_eval("b'''%s'''" % s))
b'\xd6\x83\x8dd!VT\x92\xaaA\x05\xe0\x9b\x8b\xf1'