首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python将混合ASCII代码转换为字符串

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

Stack Overflow用户
提问于 2010-12-06 18:32:49
回答 2查看 750关注 0票数 0

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

代码语言:javascript
复制
>>> mc.get("key")
'\x04\x08"\nHello'

有没有可能使用python函数将这种混合的ASCII代码解析成纯字符串?

非常感谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-06 18:45:41

It is a "plain string",只要有这样的东西存在。我不知道你想要什么样的输出,但是:

没有纯文本这回事。

Python2.x中的str类型实际上是字节的容器,而不是字符的容器。因此,它首先不是真正的文本:)它采用非常简单的编码来显示字节,使用转义序列来表示甚至有点“奇怪”的每个字节。如果您print字符串,它的格式将再次不同(您现在看到的是用于在代码中创建这样的文字字符串的语法)。

在更简单的时候,我们天真地假设我们可以将字节映射到这些我们称为“字符”的符号,就是这样。然后事实证明,人们想要使用的不同映射大约有无数种,其中许多映射需要比一个字节所能表示的符号更多的符号。这就是为什么我们现在有了Unicode :它代表了你可以想象到的任何真实语言所需要的每一个符号(还有几个用于伪语言和其他目的),它抽象地给这些符号赋值,但没有说明如何收集字节并将其解释为数字。(这就是编码的目的)。

如果您知道字符串数据是以特定方式编码的,则可以将其解码为Unicode字符串。它可以是实际Unicode数据的编码,也可以是某种其他格式(例如,日语文本通常以称为"Shift-JIS“的形式出现,因为它对它们的意义与"Latin-1”- ASCII的常见扩展-对我们的意义大致相同)。无论采用哪种方法,您都会得到一系列Unicode代码点(上一段中提到的数字)的内存表示形式。实际上,这是真正的“文本”,但并不是真正的“简单”:)

但看起来你拥有的数据实际上是一个二进制的字节团块,如果解释为ASCII码,主要由“可读文本”组成。

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

票数 7
EN

Stack Overflow用户

发布于 2010-12-06 18:42:50

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

代码语言:javascript
复制
to_trim = '\x04\x08"\n'
string = mc.get('key')
if string.startswith(to_trim):
    string = string[len(to_trim):]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4365456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档