2017-08-05 20 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 

出力は「°」でなければなりませんが、その代わりに、私は「°」を取得

私はアスキーでそれをエンコードしようとした場合、私は取得します古典的な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