1

json ファイルの内容は次のとおりです。

{"votes": {"funny": 0, "useful": 5, "cool": 2}, "user_id": "rLtl8ZkDX5vH5nAx9C3q5Q", "review_id": "fWKvX83p0-ka4JS3dc6E5A", "stars": 5, "date": "2011-01-26", "text": "My wife took me here on my birthday for breakfast and it was excellent.  It looked like the place fills up pretty quickly so the earlier you get here the better.\n\nDo yourself a favor and get their Bloody Mary. It came with 2 pieces of their griddled bread with was amazing and it absolutely made the meal complete.  It was the best \"toast\" I've ever had.\n\nAnyway, I can't wait to go back!", "type": "review", "business_id": "9yKzy9PApeiPPOUJEtnvkg"}
{"votes": {"funny": 0, "useful": 0, "cool": 0}, "user_id": "0a2KyEL0d3Yb1V6aivbIuQ", "review_id": "IjZ33sJrzXqU-0X6U8NwyA", "stars": 5, "date": "2011-07-27", "text": "I have no idea why some people give bad reviews about this place. It goes to show you, you can please everyone. They are probably griping about something that their own fault... but they said we'll be seated when the girl comes back from seating someone else. So, everything was great and not like these bad reviewers. That goes to show you that  you have to try these things yourself because all these bad reviewers have some serious issues.", "type": "review", "business_id": "ZRJwVLyzEJq1VAihDhYiow"}

私のコードは次のとおりです。

import json
from pprint import pprint
review = open('/User/Desktop/python/test.json')
data = json.load(review)
pprint(data["votes"])

エラーは次のとおりです。

Traceback (most recent call last):
  File "/Users/hadoop/Documents/workspace/dataming-course/src/Yelp/main.py", line 8, in <module>
    data = json.load(review)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 278, in load
    **kw)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 363, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 2 column 1 - line 3 column 1 (char 623 - 1294)
4

3 に答える 3

5

1 つのファイルに 2 つの JSON ドキュメントがあります。それらを配列などに入れることを検討してください。ファイルの最上位には、1 つの要素のみを含める必要があります。

于 2013-04-28T03:58:14.407 に答える
2

入力ファイルを変更できない場合はJSONDecoder.raw_decode、チャンクで行うことができます。

>>> dec = json.JSONDecoder()
>>> dec.raw_decode('["a",1]{"foo": 2}')
(['a', 1], 7)
>>> dec.raw_decode('["a",1]{"foo": 2}', 7)
({'foo': 2}, 17)

最初にファイルを文字列に読み取る必要があります。

于 2013-04-28T04:13:29.157 に答える
1

価値があるのは、次のように JSON を配列に入れてみることです。

[ { "business_id" : "9yKzy9PApeiPPOUJEtnvkg",
    "date" : "2011-01-26",
    "review_id" : "fWKvX83p0-ka4JS3dc6E5A",
    "stars" : "5",
    "text" : "My wife took me here on my birthday for breakfast and it was excellent.  It looked like the place fills up pretty quickly so the earlier you get here the better.\n\nDo yourself a favor and get their Bloody Mary. It came with 2 pieces of their griddled bread with was amazing and it absolutely made the meal complete.  It was the best \"toast\" I've ever had.\n\nAnyway, I can't wait to go back!",
    "type" : "review",
    "user_id" : "rLtl8ZkDX5vH5nAx9C3q5Q",
    "votes" : { "cool" : "2",
        "funny" : "0",
        "useful" : "5"
      }
  },
  { "business_id" : "ZRJwVLyzEJq1VAihDhYiow",
    "date" : "2011-07-27",
    "review_id" : "IjZ33sJrzXqU-0X6U8NwyA",
    "stars" : "5",
    "text" : "I have no idea why some people give bad reviews about this place. It goes to show you, you can please everyone. They are probably griping about something that their own fault... but they said we'll be seated when the girl comes back from seating someone else. So, everything was great and not like these bad reviewers. That goes to show you that  you have to try these things yourself because all these bad reviewers have some serious issues.",
    "type" : "review",
    "user_id" : "0a2KyEL0d3Yb1V6aivbIuQ",
    "votes" : { "cool" : "0",
        "funny" : "0",
        "useful" : "0"
      }
  }
]

,(そして、JSON 配列の 2 つの「メイン」部分を区切る に注意してください:)

于 2013-04-28T05:23:20.817 に答える