칸 아카데미에서 수학 질문을 오프라인으로 복사하는 프로그램을 만들고 싶습니다. 나는 모든 연습 문제에 대한 데이터가 포함 된 21.6MB의 엄청난 텍스트 파일을 가지고 있지만, 어떻게 분석을 시작해야할지 모르겠다.이 JSON 데이터 블록을 어떻게 시작하나요?
Here은 JSON 데이터의 샘플이 들어있는 pastebin입니다. 모든 것을보고 싶다면 here을 찾을 수 있습니다. 긴로드 시간에 대한 경고.
이전에는 JSON을 사용 해본 적이 없지만 데이터의 개별 "하위 블록"(또는 이와 동등한 정확한 용어)을로드하기 위해 빠른 Python 스크립트를 작성했습니다.
import sys
import json
exercises = open("exercises.txt", "r+b")
byte = 0
frontbracket = 0
backbracket = 0
while byte < 1000: #while byte < character we want to read up to
#keep at 1000 for testing purposes
char = exercises.read(1)
sys.stdout.write(char)
#Here we decide what to do based on what char we have
if str(char) == "{":
frontbracket = byte
while True:
char = exercises.read(1)
if str(char)=="}":
backbracket=byte
break
exercises.seek(frontbracket)
block = exercises.read(backbracket-frontbracket)
print "Block is " + str(backbracket-frontbracket) + " bytes long"
jsonblock = json.loads(block)
sys.stdout.write(block)
print jsonblock["translated_display_name"]
print "\nENDBLOCK\n"
byte = byte + 1
중첩 된 대괄호를 고려하지 않고 있습니다. 스택을 사용하여이를 추적 할 수 있습니다. – danielfranca
[jsonlint] (http://jsonlint.com/)와 같은 것을 사용하여 적어도 JSON의 일부를 복사하여 붙여 넣을 수 있습니다. 나는 거기에 반복 된 패턴을 발견했다고 생각하지만 실제로 어떤 데이터를 찾고 있는지 알고 있습니까? 'json'에로드하면 중첩 된 목록 및 사전처럼 취급 할 수 있습니다. – roganjosh
이것은 반복 패턴 인 것으로 보입니다. http://pastebin.com/4nSnLEFZ – roganjosh