2017-02-19 75 views
1

我刮这个网站www.soundkartell.de,并且我面临着一些问题的Unicode:的Python 2.7.x - unicode的问题

results =[] 
for article in soup.find_all('article'): 
    if article.select('a[href*="alternative"]'): 
     artist = article.h2.text      
     results.append(artist.encode('latin1').decode("utf-8")) 

print artist # Din vän Skuggan 
print results # [u'Din v\xe4n Skuggan'] 

我有-*- coding: utf-8 -*-在我的文件的顶部。

  1. 为什么python打印正确的数据而不是附加的数据?

  2. 我该如何解决unicode问题?

我使用Python 2.7.x

+1

另外,'de'是Deutschland(即德国)的国家代码。丹麦是'dk'。 –

回答

0

你可能没有真正遇到了问题。你们看到的是副作用如何蟒蛇打印件事情:

示例代码:

artist = 'Din vän Skuggan' 
artists = [artist] 
print 'artist:', artist 
print 'artists:', artists 
print 'str:', str(artist) 
print 'repr:', repr(artist) 

产地:

artist: Din vän Skuggan 
artists: ['Din v\xc3\xa4n Skuggan'] 
str: Din vän Skuggan 
repr: 'Din v\xc3\xa4n Skuggan' 

所以从上面可以看出,当蟒蛇打印一个列表,它使用repr()作为列表中的项目。在这两种情况下,你都有相同的内容,python只是以不同的方式显示它。

侧面说明:

# -*- coding: utf-8 -*- 

在脚本的顶部,是字符串常量在代码中的Unicode文本非常有用。