2017-08-05 74 views
0

我正在寫一個簡單的python程序,它從網站中檢索信息,問題是有一些詞包含特殊字符,如 「°」,「Ψ」等等。Python 2.7.13 UnicodeEncodeError和特殊字符

這裏是我的代碼:

# -*- coding: utf-8 -*- 
from bs4 import BeautifulSoup 
import urllib 
r = urllib.urlopen('http://www.samplepage.sample').read() 
soup = BeautifulSoup(r, "lxml") 
text = soup.find_all("a", class_="some_class") 
for word in text: 
    word = word.get_text() 
    word = word.encode('utf-8') 
    print word 

輸出應該是「度」,但不是說,我得到「A°」

,如果我嘗試用ASCII編碼是我得到的古典UnicodeEncodeError:

for word in text: 
    word = word.get_text() 
    word = word.encode('ascii') 
    print word 

>>> UnicodeEncodeError: 'ascii' codec can't encode characters in position 7-8: 
ordinal not in range(128) 

任何想法?

+1

什麼是這裏的_samplepage.sample_? – ksai

+0

這只是任何網頁 – devmon

+0

我們不能看到你的腳本的輸出,直到你提供_url_ – ksai

回答

0

這可能是因爲您使用錯誤的編解碼器解碼字符串。

嘗試打印字符串,並與UTF-8第一在編碼之前,你需要使用正確的解碼器進行解碼的字符串。然後你會得到一個Unicode對象,你可以打印它,並且應該顯示正確。

如果它是ascii映射之外的特殊字符,則需要使用Unicode對象來正確顯示它。

儘量做到以下幾點:

new_word = word.decode('latin-1') 
print new_code 
word = word.encode('utf-8') 
+0

你能提供一個代碼片段嗎? – devmon

+0

@devmon我已經爲答案添加了一個片段供您嘗試 – Vinny