如何将JSON文件中的单个元素顺序解析为普通python

2024-06-09 15:09:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定这个问题出在哪里,而且我对JSON也不是很流利,但接下来就是

我在pandas中处理了一个数据集,但以后可能无法使用。我将它导出为JSON记录和JSON拆分1

[{'reference': '2019-73','Latitude': 1.045,
'Longitude': 103.65, date': '2019-09-30T00:00:00.000Z},
...{etc},{etc}]

要将其带回vanilla python文件中,我有以下内容:

event_ids = set()
with codecs.open(data_directory, encoding='utf_8') as f:  # open the json file
    for event_json in f: # iterate through each line (json record) in the file
        event = json.loads(event_json)   # convert the json record to a Python dict
        event_ids.add(event(u'index') # add the event the the event_id set

但在进行上述解析时,我会遇到几种类型的错误之一(“SyntaxError:unexpected EOF”),但其他错误则取决于我是如何处理的

我的感觉是,这是因为它试图将整个JSON作为单个元素来读取,但我不确定如果删除最后一行代码,错误消息是否会消失。我做错了什么?同样重要的是,我遗漏了什么概念


Tags: theineventaddjsonidspandas错误
2条回答

源json:

[
  {
    "data1": 0,
    "data2": 1,
    "data3": 2
  },
  {
    "data1": 0,
    "data2": 1,
    "data3": 2
  },
  {
    "data1": 0,
    "data2": 1,
    "data3": 2
  },
  {
    "data1": 0,
    "data2": 1,
    "data3": 2
  }
]

Python代码:

import json

with open("file.json",'r') as f:
    var = json.load(f);
    print(var[0])
    print(var[1])
    print(var[2])

结果:

{'data1': 0, 'data2': 1, 'data3': 2}
{'data1': 0, 'data2': 1, 'data3': 2}
{'data1': 0, 'data2': 1, 'data3': 2}

您可以使用json.load将整个文件作为一个json来读取,不建议每行读取一行,因为json文件可能以多种方式格式化

hrokr,您需要为每个项添加一个迭代器:

event_latitudes=set()
data_directory='events.txt'
with codecs.open(data_directory, encoding='utf_8') as f:
     for event_json in f:
        event = json.loads(event_json)
        for item in event:         
           event_latitudes.add(item[u'Latitude'])

要处理错误,可以使用try-except块,尤其是for循环周围的块来处理json中的错误。如果您发布的部分示例文件在github上不起作用,我可以查看它并进一步提供帮助

相关问题 更多 >