对于Python 3程序无法显示中文字符

时间:2017-02-06 02:20:10

标签: python utf-8

我正在尝试一个简单的python练习。代码段来自此站点和开源。目标是解析网页并在页面中提取一些文本。该程序如下所示,使用python3并将输出重定向到文件。但是文件没有我想要的正确信息,也就是说,它没有显示中文字符,而是使用了像“\ u514d \ u8d39 \ u4e0b \ u8f7d”这样的unicode。我怎么能正确地做到这一点?

import sys, urllib.request 
import traceback
from bs4 import BeautifulSoup
url = "http://appstore.huawei.com/more/all"

def uprint(*objects, sep=' ', end='\n', file=sys.stdout):
    enc = file.encoding
    if enc == 'UTF-8':
        print(*objects, sep=sep, end=end, file=file)
    else:
        f = lambda obj: str(obj).encode(enc, errors='backslashreplace').decode(enc)
        print(*map(f, objects), sep=sep, end=end, file=file)

def crawl():
    req = urllib.request.Request( url )
    req.add_header('User-Agent', 'PyCrawler 0.2.0')
    data = urllib.request.urlopen(req).read()
    soup = BeautifulSoup(data, 'lxml')  
    items_entry = soup.find_all( class_="list-game-app dotline-btn nofloat")    
    for item in items_entry:        
        title_tag = item.find_all("h4", class_="title")
        for title in title_tag:
            title_A = item.find_all("a")
            for title_a_item in title_A:
                output = str(title_a_item.string)                
                uprint(output)
    print(u"Finishing...")

if __name__ == "__main__":
    crawl()

1 个答案:

答案 0 :(得分:0)

您的cmd字体可能不支持utf-8编码(更具体地说,是中文字符),因此它使用utf序列来显示它们。

您可以查找支持的字体(可以通过单击cmd的图标来更改设置中的字体),也可以使用显示utf-8字符的python IDLE。