为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星点点滴滴 2019-09-02 16:10:55
我是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 …有谁知道处理这些问题的一般方法?谢谢!
查看完整描述

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"]


查看完整回答
反对 回复 2019-09-02
?
holdtom

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]


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 3240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信