Python 2.7.x - unicode issue



我正在抓取此站点www.soundkartell.de,我面临着一些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 vxe4n Skuggan']

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

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

  2. 我如何修复Unicode问题?

我正在使用Python 2.7.x

您实际上可能没有问题。您看到的是Python如何打印物品的副作用:

示例代码:

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 vxc3xa4n Skuggan']
str: Din vän Skuggan
repr: 'Din vxc3xa4n Skuggan'

如上所述,当Python打印列表时,它将repr()用于列表中的项目。在这两种情况下,您都有相同的内容,Python只是显示出不同的显示。

旁注:

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

在您的脚本顶部,对于代码中的Unicode文本的字符串文字很有用。