3

Intro to Data Sci coursera クラスに従おうとしています。しかし、Twitterからのjson応答を解析しようとしているときに問題が発生しました

次の形式のjsonからテキストを取得しようとしています。

{u'delete': {u'status': {u'user_id_str': u'702327198', u'user_id': 702327198, u'id': 332772178690981889L, u'id_str': u'332772178690981889'}}}, {u'delete': {u'status': {u'user_id_str': u'864736118', u'user_id': 864736118, u'id': 332770710667792384L, u'id_str': u'332770710667792384'}}}, {u'contributors': None, u'truncated': False, **u'text'**: u'RT @afgansyah_reza: Lagi ngantri. Ada ibu2 & temennya. "Ih dia mukanya mirip banget sama Afgan.", trus ngedeketin gw, "Tuh kan.. Mirip bang\u2026', u'in_reply_to_status_id': None, u'id': 332772350640668672L, u'favorite_count': 0, ....... ]

そして、ここに私が使用しているコードがあります:

def hw():
    data = []
    count=0
    with open('output.txt') as f:
        for line in f:
            encoded_string = line.strip().encode('utf-8')
            data.append(json.loads(encoded_string))

    print data# generates the input to next block
    for listval in data:#individual block
        if "text" in listval:
            print listval["text"]
        else:
            continue

ただし、実行すると次の出力とエラーが表示されます

   RT @afgansyah_reza: Lagi ngantri. Ada ibu2 & temennya. "Ih dia mukanya mirip banget sama Afgan.", trus ngedeketin gw, "Tuh kan.. Mirip bang…
RT @Dimaz_CSIX: Kolor pakek pita #laguharlemshake
Traceback (most recent call last):
  File "F:\ProgrammingPoint\workspace-new\PyTest\tweet_sentiment.py", line 41, in <module>
    main()
  File "F:\ProgrammingPoint\workspace-new\PyTest\tweet_sentiment.py", line 36, in main
    hw()
  File "F:\ProgrammingPoint\workspace-new\PyTest\tweet_sentiment.py", line 23, in hw
    print listval["text"]
  File "C:\Python27\lib\encodings\cp1252.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 13-63: character maps to <undefined>

私はPythonの新参者であり、助けていただければ幸いです。

4

3 に答える 3

9
于 2013-05-10T22:48:10.883 に答える
5

PyDev Eclipse プラグインを使用している場合は、Windows->Preferences->General->Workspace に移動して、左下隅の TEXT FILE ENCODING を選択してください -> Choose Other = UTF-8 を選択してください。

それはうまくいくかもしれません。

于 2013-05-15T02:10:33.687 に答える
0

json.loads 呼び出しは、UTF-8 でエンコードされた json を Python Unicode 文字列に変換しています。印刷すると、テキストを環境のデフォルトのエンコーディングに変換しようとします。これは、cp1252.py リファレンスで Windows コード ページ 1252 であることが明らかになっています。印刷する前に、出力形式を決定し、それにエンコードする必要があります。cp1252 が必要な場合は、デフォルトの「strict」以外のエラー ハンドラを指定してください。

http://docs.python.org/2/howto/unicode.htmlには、さまざまなエラー ハンドラーの可能性を含む完全なドキュメントがあります。

于 2013-05-10T22:48:47.827 に答える