我有一个字符串看起来像这样:
"\\xd6\\x83\\x8dd!VT\\x92\\xaaA\\x05\\xe0\\x9b\\x8b\\xf1"
我想删除双转义字符,以使其成为一个合适的二进制文件。这甚至可能吗?
答案 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'