Python打印功能的副作用

时间:2016-01-20 15:44:10

标签: python unicode encoding lxml

我使用lxml来解析一些带有俄文字母的HTML。这就是我为什么头疼编码的原因。 我使用以下代码将html文本转换为树。然后我尝试使用css查询从页面中提取一些内容(标题,arcticle内容)。

from lxml import html
from bs4 import UnicodeDammit

doc = UnicodeDammit(html_text, is_html=True)
parser = html.HTMLParser(encoding=doc.original_encoding)
tree = html.fromstring(html_text, parser=parser)

...

def extract_title(tree):
   metas = tree.cssselect("meta[property^=og]")
   for meta in metas:       
       # print(meta.attrib)
       # print(sys.stdout.encoding)
       # print("123")    # Uncomment this to fix error
       content = meta.attrib['content']
       print(content.encode('utf-8')) # This fails with "[Decode error - output not utf-8]"

我得到"解码错误"当我试图将unicode符号打印到stdout时。但如果我在打印失败之前添加一些打印语句,那么一切正常。我从未见过python打印功能的这种奇怪行为。我认为它没有副作用。 你知道为什么会这样吗? 我使用Windows和Sublime来运行此代码。

0 个答案:

没有答案