Python将混合ASCII代码转换为字符串

2024-09-27 07:19:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python memcached库从memcached检索另一个应用程序设置的值。但不幸的是,我得到的价值是:

>>> mc.get("key")
'\x04\x08"\nHello'

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

谢谢你的帮助


Tags: key函数字符串代码应用程序getasciimemcached
2条回答

如果您只需要修剪'\x04\x08"\n',并且它总是一样的(您没有很清楚地提出您的问题,我不确定这是什么或者您想要什么),请这样做:

to_trim = '\x04\x08"\n'
string = mc.get('key')
if string.startswith(to_trim):
    string = string[len(to_trim):]

一个“普通字符串”,在某种程度上,这样的东西存在。我不知道你期望什么样的输出,但是:

没有纯文本。在

Python(无论如何在2.x中)str类型实际上是字节的容器,而不是字符的容器。所以它并不是真正的文本:)它以一种非常简单的编码方式显示字节,使用转义序列来表示每一个稍微“怪异”的字节。如果您print字符串(您现在看到的是在代码中创建这样一个文本字符串的语法),它的格式将再次不同。在

在更简单的时候,我们天真地假设我们可以将字节映射到我们称之为“字符”的符号上,就这样。结果发现,人们想要使用的映射大约有无数种,其中许多映射需要的符号比一个字节所能表示的还要多。这就是我们现在有Unicode的原因:它代表任何真实世界语言(还有一些用于伪语言和其他目的)可能需要的每个符号,它抽象地为这些符号分配数字,但没有说明如何收集并将字节解释为数字。(这就是编码的目的)。在

如果知道字符串数据是以特定方式编码的,则可以将其解码为Unicode字符串。它可以是实际Unicode数据的编码,也可以是其他格式(例如,日语文本经常出现在“Shift-JIS”中,因为它对它们的意义与“Latin-1”(ASCII的一个常见扩展)对我们的意义大致相同。无论哪种方式,您都可以得到一系列Unicode码位(在上一段中提到的数字)的内存表示。从所有的意图和目的来看,这确实是“文本”,但不是真正的“纯文本”:)

但是看起来你所拥有的数据实际上是一个二进制的字节块,如果被解释为ASCII的话,就会变成大部分的“可读文本”。在

您真正需要做的是找出为什么第一个字节的值是4,下一个字节的值是8,并相应地继续。在

相关问题 更多 >

    热门问题