2016-12-02 2 views
0

JSON 요소의 시퀀스 (반드시 목록/튜플 등이 아님)가 포함 된 입력 파일이 있습니다.Python의 JSON 데이터 읽기

{ 
      "candidate":[ 
       { 
        "id":"25624", 
        "name":"Clinton", 
        "affiliation":"Democrat", 
        "color":"", 
        "value":"46.8", 
        "status":"1" 
       }, 
       { 
        "id":"25623", 
        "name":"Trump", 
        "affiliation":"Republican", 
        "color":"", 
        "value":"43.6", 
        "status":"1" 
       } 
      ], 
      "date":"Tue, 08 Nov 2016 00:00:00 -0600" }, { 
      "candidate":[ 
       { 
        "id":"25624", 
        "name":"Clinton", 
        "affiliation":"Democrat", 
        "color":"", 
        "value":"47.0", 
        "status":"1" 
       }, 
       { 
        "id":"25623", 
        "name":"Trump", 
        "affiliation":"Republican", 
        "color":"", 
        "value":"43.8", 
        "status":"1" 
       } 
      ], 
      "date":"Mon, 07 Nov 2016 00:00:00 -0600" } 

내가 JSON의 첫 번째 블록을 읽을 수는 있지만 여러 블록을 읽을 때 밖으로 잘못한다 할 수 JSON 라이브러리를 사용하는 것을 시도하고있다 :

는 샘플 데이터입니다.

파이썬에서 여러 JSON 요소를 읽는 올바른 방법은 무엇입니까?

미리 감사드립니다.

+0

JSON 개체의 배열로 만드시겠습니까? – bharadhwaj

+0

전체 파일을 Json 객체의 배열로 변환하는 방법이 있습니까? 모든 포인터가 도움이 될 것입니다 – Abhi

답변

0

생성기 함수를 만들고 파이썬에서 json이 구현 된 방법을 활용하는 것이 좋습니다. 여기 내 작업의 예는 발전기 기능입니다 :

import json 
from splitstream import splitfile 

def generate_json(file_name): 
    for jsonstr in splitfile(open(file_name), format="json"): 
     yield json.loads(jsonstr) 

for item in generate_json('data.json'): 
    print item 

그러나 (PIP를 통해) splitstream를 설치해야하고 코드에서 생성 기능 generate_json를 포함 할 수 있습니다. 이 함수는 json 객체가 완성 될 때마다 그것을 반환 (반환)합니다.

+0

함수에서 jsonstr은 바이트로 반환됩니다. json.loads가 바이트를 처리 할 수 ​​없다는 오류 메시지가 반환됩니다. "트레이스 백 (가장 최근 호출 마지막) : generate_json ('testData.json')의 항목에 대해 의 파일"read_polls.py "11 행을 파일 "read_polls.py", 줄 9, generate_json 로드 에서 json.loads (jsonstr) 파일 "/Users/ayada/anaconda/lib/python3.5/json/__init__.py"312 줄을 산출하십시오. .__ class __.__ name__)) TypeError : JSON 객체는 'bytes가 아니라 str이어야합니다. " – Abhi

+0

함수에서 jsonstr의 유형을 이해하고 싶습니다. 나는 파이썬 3.5 – Abhi

+0

str (jsonstr, 'utf-8'), cnverted 바이트를 String으로 사용하고있다. 솔루션은 훌륭하게 작동했습니다. 감사!! – Abhi