我有一个文件,包含十六进制数据和非十六进制数据。
例如,var _0x36ba=["\x69\x73\x41\x72\x72\x61\x79","\x63\x61\x6C\x6C","\x74\x6F\x53\x74\x72\x69\x6E\x67",]
当我直接在python控制台中粘贴这段代码时,我得到了var _0x36ba=["isArray","call","toString",]
但是当我试图读取文件并打印内容时,它给了我var _0x36ba=["\\x69\\x73\\x41\\x72\\x72\\x61\\x79","\\x63\\x61\\x6C\\x6C","\\x74\\x6F\\x53\\x74\\x72\\x69\\x6E\\x67","\\
似乎反斜杠是按原样解析的。在
如何读取文件并获得可读的输出?在
编辑:请使用马蒂金的解决方案。我还不知道
text.decode('string_escape')
,当然它要快得多。以下是我最初的答案。在使用此正则表达式可以取消字符串中所有转义的十六进制表达式:
如果您知道输入将不包含后跟
^{pr2}$x
的双反斜杠(例如foo bar \\x41 bloh
,可能应该解释为foo bar \x41 bloh
,而不是foo bar \A bloh
),那么您可以将其简化为:有带有
\xhh
十六进制转义符的字符串文本。您可以使用string_escape
编码对其进行解码:请参阅
codecs
模块文档的Python Specific Encodings section:解码会反转编码:
^{pr2}$作为一个内置的编解码器,这比使用正则表达式要快得多:
速度快了14倍。在
相关问题 更多 >
编程相关推荐