2016-11-14 14 views
1

現在、私はPython 2.7を使用しており、中国語のWebサイトでWebスクレイピングを行っています。Python2.7 UnicodeEncodeError: 'ascii'コーデックは0〜11桁の文字をエンコードできません:序数は範囲外です(128)

以下のユニコードを文字列に変換するにはどうすればよいですか?

単純なSTR()関数は動作と UnicodeEncodeErrorをを述べない: 'ASCII' コーデックは位置0-11の文字をエンコードすることができない:予め序ない範囲で(128)

おかげで、

u'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n' 
+0

[UnicodeEncodeError: 'ascii'コーデックは、位置20の文字u '\ xa0'をエンコードできません:範囲(128)の序数](http://stackoverflow.com/questions/9942594/) unicodeencodeerror-ascii-code c-cant-encode-character-u-xa0-in-position-20) – ImportanceOfBeingErnest

答えて

2

文字列はすでにエンコードされているため、ユニコードオブジェクトではなくバイトオブジェクトである必要があります。代わりにその問題を解決してください。あなたの掻き取り、データのreprはこのように見ている必要がありますすなわち:

u'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n' 

Unicodeオブジェクトから中国語テキストを回復するには、あなたがバイトにジャンプし、バックアップすることができます:

'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n' 

これを好きではありません

>>> text = u'\n\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3\n' 
>>> print text.encode('latin-1').decode('utf-8') 

中国深圳 
+0

これは機能します!ありがとうございます –