猿问

一个文件中的多个Json对象由python提取

我是Json文件的新手。如果我有一个带有多个json对象的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"},…]}

我想将所有“时间戳”和“有用性”提取到数据框中:


    Timestamp    Usefulness

 0   20140101      Yes

 1   20140102      No

 2   20140103      No

 …

有谁知道处理这些问题的一般方法?谢谢!


繁星点点滴滴
浏览 3241回答 3
3回答

动漫人物

使用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 jsonwith open('file.json') as json_file:    data = json.load(json_file)现在,数据的内容是一个数组,其中的字典代表每个元素。您可以轻松访问它,即:data[0]["ID"]

holdtom

您可以使用json.JSONDecoder.raw_decode任意解码大量“堆叠”JSON字符串(只要它们可以适合内存)。raw_decode一旦它有一个有效的对象就停止,并返回不在解析对象中的最后一个位置。它没有记录,但您可以将此位置传回,raw_decode并从该位置再次开始解析。不幸的是,Python json模块不接受具有前缀空格的字符串。所以我们需要搜索以找到文档的第一个非空白部分。from json import JSONDecoder, JSONDecodeErrorimport reNOT_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 objs = """{"a": 1}     [1,   2]"""for obj in decode_stacked(s):    print(obj)打印:{'a': 1}[1, 2]
随时随地看视频慕课网APP

相关分类

Python
我要回答