如何在Python中将十六进制字符串“\x89PNG”转换为纯文本

Sum*_*aye 1 python hex ascii

我有一个字符串"\x89PNG",我想将其转换为纯文本。

我提到了http://love-python.blogspot.in/2008/05/convert-hext-to-ascii-string-in-python.html 但我发现它有点复杂。这可以用更简单的方式完成吗?

Rom*_*huk 5

\\x89PNG 纯文本。尝试打印它:

\n\n
>>> s = \'\\x89PNG\'\n>>> print s\n\xe2\x94\xb4PNG\n
Run Code Online (Sandbox Code Playgroud)\n\n

链接中的食谱没有任何作用:

\n\n
>>> hex_string = \'\\x70f=l\\x26hl=en\\x26geocode=\\x26q\\x3c\'\n>>> ascii_string = reformat_content(hex_string)\n>>> hex_string == ascii_string\nTrue\n
Run Code Online (Sandbox Code Playgroud)\n\n

真正的十六进制<->明文编码\\解码是小菜一碟:

\n\n
>>> s.encode(\'hex\')\n\'89504e47\'\n>>> \'89504e47\'.decode(\'hex\')\n\'\\x89PNG\'\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

\'\\x70f=l\\x26hl=en\\x26geocode=\\x26q\\x3c\'但是,您可能会遇到诸如, where\'\\\'和 之类的字符串问题\'x\'是单独的字符:

\n\n
>>> s = \'\\\\x70f=l\\\\x26hl=en\\\\x26geocode=\\\\x26q\\\\x3c\'\n>>> print s\n\\x70f=l\\x26hl=en\\x26geocode=\\x26q\\x3c\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这种情况下string_escape编码确实很有帮助:

\n\n
>>> print s.decode(\'string_escape\')\npf=l&hl=en&geocode=&q<\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

有关编码的更多信息 - http://docs.python.org/library/codecs.html#standard-encodings

\n