我有以下代码:
code1 = ("\xd9\xf6\xd9\x74\x24\xf4\x5f\x29\xc9\xbd\x69\xd1\xbb\x18\xb1")
print code1
code2 = open("code.txt", 'rb').read()
print code2
代码1输出:
^{pr2}$代码2输出:
"\xd9\xf6\xd9\x74\x24\xf4\x5f\x29\xc9\xbd\x69\xd1\xbb\x18\xb1"
我需要code2(我从一个文件中读取的)要有与code1相同的输出。
我怎么解决这个问题?在
解释一系列字符,如
与Python一样,字符串包含转义字符,例如
^{pr2}$使用
.decode('string_escape')
:在Python3中,
string_escape
编解码器已被删除,因此等效的print eval(code2)
应该完成这项工作。在这个例子:
{cd1>打印^。在
可以使用
binascii.unhexlify
将十六进制文本表示形式转换为二进制,但首先必须从字符串中删除\x
。在编辑:我刚刚意识到双引号是输出的一部分。本质上你只需要传递有效的十六进制字符串,所以其他所有的东西都需要去掉。在您的例子中,您需要将
code2.replace('\\x', '').strip('"')
传递给unhexlify
。您可以使用eval
,而且可能会使用,但是考虑一下{a1}作为将来的选择。在相关问题 更多 >
编程相关推荐