我想製作一個程序,讓可汗學院的數學問題離線複製。我有一個巨大的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