2016-07-07

Pythonでエラー:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)が出るときの対処法

最近、またコツコツと自然言語処理の勉強をしています。

PythonでNLTKを使っているといろんなところでこのエラーが出ますよね。

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

その度に、encode('utf-8')を使ってみたりunicode()を使ってみたりでその場しのぎをしてきましたけど、今回はどうしてもうまくいかなかった。

そこでオライリーの入門自然言語処理を読んでみるとばっちし対処法が書いてあった。


import codecs, sys

sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
sys.stdin = codecs.getreader('utf_8')(sys.stdin)

最初にこれを追加してやると嘘のようにうまくいきました。

NLTKでいろいろやってて文字コードのエラーで困っている人はぜひ試してみて下さい。

入門 自然言語処理

オライリーの本はクオリティに差があるけどいい本は本当にいい。

0 件のコメント:

コメントを投稿