3

私はPython用のTwitterAPIを試していますが、文字エンコード/デコードの問題が発生しました。ユーザー(この場合は@BBCWorld)のツイートを収集しているときに、特別な句読点があると、次のエラーが発生します。

286952044814794753 :  Traceback (most recent call last):
  File "C:\Python27\lib\encodings\cp850.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u201c' in position 0: character maps to <undefined>

注:先頭の長い数字は、エラーの原因となったツイートのIDです。

この問題を引き起こしている特定の文字は、角度のある(開始)二重引用符です(MS-Wordで使用されているもののように)。そのような句読点を互換性のある形式で表示する方法はありますか?理想的には、文字を省略するのではなく、置換を使用してこの種のエラーを克服し、コンテキストを維持するために、ツイートをサニタイズしたいと思います。

これがコードのコアです。

tweets=api.GetUserTimeline('BBCWorld') 
try: 
    for tweet in tweets: 
        print tweet.id, ": ", (tweet.text) 
except UnicodeEncodeError as uee: 
    print uee

ポインタをありがとう、

ミルティン

4

1 に答える 1

3

この問題は、python-twitterまたはpythonの問題ではないようです。これは、Windowscmdの問題です。

適切なUnixターミナルでこれを試してみると、次のようになります。

>>> import twitter
>>> api = twitter.Api()
>>> print api.GetStatus('286952044814794753').text
“How do you change mindsets at a societal level, in a country of 1.2bn people?” - Viewpoints from India http://t.co/RiP4t71q #Delhigangrape

Windowsでこれに対処する方法については、この質問を参照してください。Unicodeがcp850(cp437)に正しく印刷されない、トランプのスーツ

ここに概説されているように、コンソールのフォントとコードページをユニコード準拠に変更するのが最善の策です: https ://stackoverflow.com/a/4234515/679897 またはここ:http ://www.velocityreviews.com/forums /t717717-python-unicode-and-windows-cmd-exe.html

于 2013-01-04T01:07:28.853 に答える