我正在抓取此站点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 -*-
。
为什么Python打印正确的数据而不是附加的数据?
我如何修复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文本的字符串文字很有用。