2012-02-01 8 views
0

次の文字列をデコードしてエラーを取得しようとしていました。次の文字列をデコードする方法

item = lh.fromstring(items[1].text).text_content().strip().decode('utf-8') 

File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode 
return codecs.utf_8_decode(input, errors, True) 

UnicodeEncodeError: 'ascii' codec can't encode character u'\u20a8' in position 0: ordinal not in range(128) 

どのようなアイデアが間違っていますか?

items[1].text = <strong>₨ 18,500 </strong> 
repr(items[1].text) = u'\u20a8 18,500' 
+2

あなたがお手伝いできるように、 'items [1] .text'の値を投稿してください。 –

+1

関連http://www.fileformat.info/info/unicode/char/20a8/index.htm –

+0

¥18,500

答えて

3

decodeを呼び出しましたが、エラーがencodeであるという事実は、あなたの文字列がバイトコードではなく、最初にUnicodeであるという手掛かりです。 decodeは、バイト文字列からUnicodeに変換するためのもので、encodeはそれ以外の方法です。

+2

python3はこれをより明確にしています。メソッドのデコードでは 'bytes'が、メソッドのエンコードでは' str'があります。 – steabert

+0

申し訳ありませんが、私は全く反対の方法でそれを探していた –

1

既にデコードされた(Unicode)文字列をデコードしようとしているようです。だから、.decode('utf-8')を落とすとうまくいくはずです。そうでない限り、あなたは何か他のものを意味しているのではないでしょうか(おそらく、エンコードして特定のエンコーディングにしたいと思うかもしれません)。

関連する問題