2017-02-19 7 views
1

Я выскабливание этого сайта www.soundkartell.de, и я столкнулся некоторые проблемы Юникода:Python 2.7.x - юникод вопрос

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. Как исправить проблему в Юникоде?

Я использую 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 просто показывает его по-разному.

Side Примечание:

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

В верхней части сценария, полезно для строковых литералов с Юникод текста в коде.

Смежные вопросы