0

Windows に Chrome Compact Language Detection ライブラリをインストールする際に問題が発生した後、この easy_install から CLD をインストールしました。

CLD を使用できるようになりましたが、エンコードの問題が発生します。

バックグラウンド

ツイートを Python スクリプトに取り込み、ハッシュタグとリンクを取り除いた後、それらを CLD に渡して言語を検出します。
以下は、私のコードの簡略版です。

s = "I am a tweet from Twitter"
clean_s = s.encode('utf-8')
lan = cld.detect(clean_s, pickSummaryLanguage=True, removeWeakMatches=True)

問題

5 回中 4 回、これは期待どおりに機能します (どの言語であるかについての応答が返されます)。

ただし、このエラーがポップアップし続けます。

UnicodeEncodeError: 'charmap' コーデックは位置 15 の文字 u'\u2019' をエンコードできません: 文字は未定義にマップされます

はそれを読みました:

「CLD に clean (interchange-valid) UTF-8 を提供する必要があるため、エンコードの問題は事前に整理する必要があります。」

しかし、これは UTF8 にエンコードするステートメントでカバーされていると思いましたか?

アラビア語、アジア語などの言語のフォントを保持する文字列を CLD に渡すようにする必要があると思います。

これは私の最初の python プロジェクトなので、おそらく初歩的なミスです。誰かが私の間違いと修正方法を指摘できますか?

さらに情報を収集する必要がある場合は、コメントでお知らせください。Q を編集して詳細情報を提供します。

編集 それが役立つ場合は、ここに私の新人コードがあります(問題を再現するために削減されています)。Python 2.7 32 ビットを実行しています。

このコードを実行すると、しばらくすると、このエラーが発生します。エラー報告を正しく実装していない場合はお知らせください。

Raw: Traceback (most recent call last):
  File "LanguageTesting.py", line 71, in <module>
    parse_tweet(tweet)
  File "LanguageTesting.py", line 43, in parse_tweet
    print "Raw:", raw
  File "C:\Python27\ArcGIS10.1\lib\encodings\cp850.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 29-32: character maps to <undefined>
4

1 に答える 1

1

printステートメントで失敗しているようですよね?これは、Python が Unicode 文字列をコンソールの stdout エンコーディング ("print sys.getdefaultencoding()") と見なすものにエンコードできないことを意味します。

端末が期待するものについて python が間違っている場合は、環境変数 ("export PYTHONIOENCODING=UTF-8") を設定すると、出力された文字列が utf-8 にエンコードされます。または、印刷する前に、端末が期待する文字セットにエンコードできます(ヒットしたような例外を回避するために、エラーを無視/置換する必要がある可能性があります)...

于 2012-11-21T12:41:29.713 に答える