首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析\xd0\xb2\xd0\xbe等问题

解析\xd0\xb2\xd0\xbe等问题
EN

Stack Overflow用户
提问于 2014-07-09 07:00:43
回答 1查看 4.1K关注 0票数 1

我正在从数据库中读取一些数据,其中包括各种语言的数据,其中一种是俄语。当我试图读取文本时,字符串如下所示:

代码语言:javascript
复制
('\xd0\xb2\xd0\xbe\xd1\x82 \xd0\xb2\xd1\x8b \xd0\xb5\xd0\xb3\xd0\xbe \xd1\x81\xd0\xb5\xd0\xb9\xd1\x87\xd0\xb0\xd1\x81 \xd0\xb8 \xd0\xbe\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xb4\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xb5\xd1\x82\xd0\xb5! \xd0\xa0\xd0\xb0\xd1\x88\xd0\xb8\xd1\x81\xd1\x82\xd1\x8b \xd0\xb5\xd1\x89\xd1\x91 \xd1\x81\xd0\xb5\xd0\xb1\xd1\x8f \xd0\xbf\xd1\x80\xd0\xbe\xd1\x8f\xd0\xb2\xd1\x8f\xd1\x82. \xd1\x8d\xd1\x82\xd0\xbe \xd0\xb5\xd1\x89\xd1\x91 \xd0\xb4\xd0\xb0\xd0\xb6\xd0\xb5 \xd0\xbd\xd0\xb5 \xd0\xbd\xd0\xb0\xd1\x87\xd0\xb0\xd0\xbb\xd0\xbe!',)

因此,如果我现在将我的代码写成:

代码语言:javascript
复制
import pprint

class MyPrettyPrinter(pprint.PrettyPrinter):
    def format(self, object, context, maxlevels, level):
        if isinstance(object, unicode):
            return (object.encode('utf8'), True, False)
        return pprint.PrettyPrinter.format(self, object, context, maxlevels, level)

a = ('\xd0\xb2\xd0\xbe\xd1\x82 \xd0\xb2\xd1\x8b \xd0\xb5\xd0\xb3\xd0\xbe \xd1\x81\xd0\xb5\xd0\xb9\xd1\x87\xd0\xb0\xd1\x81 \xd0\xb8 \xd0\xbe\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xb4\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xb5\xd1\x82\xd0\xb5! \xd0\xa0\xd0\xb0\xd1\x88\xd0\xb8\xd1\x81\xd1\x82\xd1\x8b \xd0\xb5\xd1\x89\xd1\x91 \xd1\x81\xd0\xb5\xd0\xb1\xd1\x8f \xd0\xbf\xd1\x80\xd0\xbe\xd1\x8f\xd0\xb2\xd1\x8f\xd1\x82. \xd1\x8d\xd1\x82\xd0\xbe \xd0\xb5\xd1\x89\xd1\x91 \xd0\xb4\xd0\xb0\xd0\xb6\xd0\xb5 \xd0\xbd\xd0\xb5 \xd0\xbd\xd0\xb0\xd1\x87\xd0\xb0\xd0\xbb\xd0\xbe!',)

MyPrettyPrinter().pprint(a)

产出如下:

代码语言:javascript
复制
('\xd0\xb2\xd0\xbe\xd1\x82 \xd0\xb2\xd1\x8b \xd0\xb5\xd0\xb3\xd0\xbe \xd1\x81\xd0\xb5\xd0\xb9\xd1\x87\xd0\xb0\xd1\x81 \xd0\xb8 \xd0\xbe\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xb4\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xb5\xd1\x82\xd0\xb5! \xd0\xa0\xd0\xb0\xd1\x88\xd0\xb8\xd1\x81\xd1\x82\xd1\x8b \xd0\xb5\xd1\x89\xd1\x91 \xd1\x81\xd0\xb5\xd0\xb1\xd1\x8f \xd0\xbf\xd1\x80\xd0\xbe\xd1\x8f\xd0\xb2\xd1\x8f\xd1\x82. \xd1\x8d\xd1\x82\xd0\xbe \xd0\xb5\xd1\x89\xd1\x91 \xd0\xb4\xd0\xb0\xd0\xb6\xd0\xb5 \xd0\xbd\xd0\xb5 \xd0\xbd\xd0\xb0\xd1\x87\xd0\xb0\xd0\xbb\xd0\xbe!',)

我想把这个文本转换回ASCII。我已经尝试过PrettyPrinter方法解释了here,但是这个方法会打印字符串。我想捕捉这个ASCII/utf-8格式的“固定”字符串(真正的俄语文本,而不是包含斜杠的文本),并将其存储在一个列表中,而我不知道如何做到这一点。如果能提供任何帮助,我们将不胜感激。

编辑:

这是我的字符串,我试着把它转换成unicode,但是它没有任何影响。

EN

回答 1

Stack Overflow用户

发布于 2014-07-09 21:37:43

如果打印象元组这样的容器对象,则其中的每个元素都将转换为其repr()字符串形式,即十六进制转义用于字符串可显示的ASCII字符之外的字节值。它是这样做的,这样程序员就可以看到实际包含的值,而不需要终端根据某种编码来解释它。假设终端机不干扰ASCII。

代码语言:javascript
复制
print a[0]
# -> вот вы его сейчас и оправдываете! Рашисты ещё себя проявят. это ещё даже не начало!

因此,如果您的终端使用UTF-8,那么只需从元组中提取值并打印出来。否则,在进一步处理字符串之前,您可能需要将UTF-8的字符串解码为unicode对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24647216

复制
相关文章

相似问题

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