Python将混合ASCII代码转换为String

Jos*_*ogi 0 python memcached ascii

我正在使用python-memcached库检索由memcached中的另一个应用程序设置的值.但不幸的是,这是我得到的价值:

>>> mc.get("key")
'\x04\x08"\nHello'
Run Code Online (Sandbox Code Playgroud)

是否可以使用python函数将此混合ASCII代码解析为纯字符串?

谢谢你的帮助

Kar*_*tel 7

一种"普通的字符串",只要存在这种情况.我不知道你期望什么样的输出,但是:

没有纯文本这样的东西.

Python(在2.x中,无论如何)str类型实际上是字节的容器,而不是字符.因此,它是不是真的摆在首位文本:)它显示字节假设一个很简单的编码,使用转义序列来表示每个字节这甚至略带"怪异".如果你print是字符串,它将被再次格式化(你现在看到的是在你的代码中创建这样一个文字字符串的语法).

在更简单的时候,我们天真地假设我们可以将字节映射到这些符号,我们称之为"字符",那就是那样.然后事实证明,人们想要使用大约数十亿种不同的映射,并且许多映射需要的字符数比字节所能表示的要多.这就是为什么我们现在unicode:它代表着每一个符号,你可以想见,无需任何真实世界的语言(和一些假冒的语言和其他目的),它抽象指定编号的那些符号,但没有说如何收集和解释字节数字.(这是编码的目的).

如果您知道字符串数据以特定方式编码,则可以将其解码为Unicode字符串.这既可以是实际的Unicode数据的编码,也可以是其他格式(例如,日本的文字叫做"SJIS"经常发现,因为它具有大致相同的意义他们为"拉丁语1" - ASCII的常见扩展 - 对我们有用.无论哪种方式,您都可以获得一系列Unicode代码点的内存表示(前一段中提到的数字).对于所有意图和目的,这实际上是"文本",但它不是真正的"简单":)

但看起来你拥有的数据实际上是一个字节的二进制blob,如果解释为ASCII ,它恰好恰好包含"可读文本".

你真正需要做的是弄清楚为什么第一个字节的值为4而下一个字节的值为8,并相应地继续.