Python2.7编码和feedpar

2024-09-27 00:15:26 发布

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

简而言之,我的情况是:

  • 从RSS源读取数据
  • 将内容打印到终端

当然,内容不是纯ascii格式的,而是utf-8格式的,所以我得到了像“äå”这样的字符。但是当我打印文本时,它会被诸如“\xe4”之类的ecapes弄乱了。和编码有关,但我就是不明白。这应该是如此的微不足道,但谷歌傅是让我失望。在

一个例子是当我逐字逐句地浏览内容并试图找到“掼”这个字符时,我确实:

if u"ö" in word:

这只是给出:UnicodeDecodeError:'ascii'编解码器无法解码第6位的字节0xc3。。。在

编辑:

所以我想我发现了我的问题。我在拿饲料然后做str(条目.内容)继续往前走,但是条目.内容是一个包含一个以unicode字符串作为值的字典的列表,所以我所做的(我猜)只是得到字典内容的ascii表示。。。在


Tags: 文本终端内容编码字典格式ascii情况
3条回答

您正在尝试将编码文本与unicode进行比较。Python不知道编码的文本是UTF-8,所以它猜测它是ASCII,并尝试将其解码为unicode。解决方案是用正确的编码显式地解码它。在

查看Python Unicode HOWTO了解更多信息。在

我可以用这个文件重现您的问题:

# coding: utf-8

word = "öäå"
if u"ö" in word:
    print True

然后用这个文件修复它:

^{pr2}$

如果您知道您的文本是UTF-8,那么可以在开始使用它们之前将其解码为unicode对象。一旦从文件中读取字节,就可以使用字符串的decode()方法作为word.decode('UTF8')对它们进行解码,以返回unicode对象。在

尝试使用feedparser包http://packages.python.org/feedparser/ 它能很好地处理编码并支持几乎所有的feed格式。你只会得到结构良好的数据。在

相关问题 更多 >

    热门问题