3 回答
TA贡献1815条经验 获得超10个赞
使用json数组,格式为:
[
{"ID":"12345","Timestamp":"20140101", "Usefulness":"Yes",
"Code":[{"event1":"A","result":"1"},…]},
{"ID":"1A35B","Timestamp":"20140102", "Usefulness":"No",
"Code":[{"event1":"B","result":"1"},…]},
{"ID":"AA356","Timestamp":"20140103", "Usefulness":"No",
"Code":[{"event1":"B","result":"0"},…]},
...
]
然后将其导入您的python代码
import json
with open('file.json') as json_file:
data = json.load(json_file)
现在,数据的内容是一个数组,其中的字典代表每个元素。
您可以轻松访问它,即:
data[0]["ID"]
TA贡献1805条经验 获得超10个赞
您可以使用json.JSONDecoder.raw_decode任意解码大量“堆叠”JSON字符串(只要它们可以适合内存)。raw_decode一旦它有一个有效的对象就停止,并返回不在解析对象中的最后一个位置。它没有记录,但您可以将此位置传回,raw_decode并从该位置再次开始解析。不幸的是,Python json模块不接受具有前缀空格的字符串。所以我们需要搜索以找到文档的第一个非空白部分。
from json import JSONDecoder, JSONDecodeError
import re
NOT_WHITESPACE = re.compile(r'[^\s]')
def decode_stacked(document, pos=0, decoder=JSONDecoder()):
while True:
match = NOT_WHITESPACE.search(document, pos)
if not match:
return
pos = match.start()
try:
obj, pos = decoder.raw_decode(document, pos)
except JSONDecodeError:
# do something sensible if there's some error
raise
yield obj
s = """
{"a": 1}
[
1
,
2
]
"""
for obj in decode_stacked(s):
print(obj)
打印:
{'a': 1}
[1, 2]
添加回答
举报