python - Python 中解析 JSON 的文件格式不正确

标签 python json python-3.x file format

我的文件包含如下数量的 JSON 记录:

输入文件:

{"timestamp":1487271527,"user":"Dave","action":"browse"}
{"timestamp":1487271528,"user":"Dave","action":"navigate"}
{"timestamp":1487271529,"user":"Dave","action":"browse"}
{"timestamp":1487271530,"user":"Dave","action":"view"}
{"timestamp":1487271531,"user":"Dave","action":"browse"}
{"timestamp":1487271532,"user":"Dave","action":"browse"}
{"timestamp":1487271533,"user":"Dave","action":"browse"}
{"timestamp":1487271534,"user":"Dave","action":"navigate"}

我想将此数据加载到字典中,类似于 json.load 函数的作用

我怎样才能做到这一点?

使用 json.load 我收到以下错误:

Traceback (most recent call last):
  File "C:/Users/lenovo/AppData/Local/Programs/Python/Python36-32/Granular.py", line 5, in <module>
    input_data = json.load(open(r"C:\Users\lenovo\Desktop\nlp\input.txt",'r'))
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 299, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 342, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 57)

最佳答案

示例文件中的每一行都是一个单独的 JSON 结构。您可能希望在文件名的扩展名中明确这一点,例如您可以使用 lsjson 代表行分隔的 JSON

在这种情况下,您必须将每个值作为字符串读取,并将其解码为 python 字典:

import json

with open('example.lsjson') as fh:
    data = [json.loads(line) for line in fh.readlines()]

你最终会得到一个字典列表

from pprint import pprint
pprint(data)
[{u'action': u'browse', u'timestamp': 1487271527, u'user': u'Dave'},
 {u'action': u'navigate', u'timestamp': 1487271528, u'user': u'Dave'},
 {u'action': u'browse', u'timestamp': 1487271529, u'user': u'Dave'},
 {u'action': u'view', u'timestamp': 1487271530, u'user': u'Dave'},
 {u'action': u'browse', u'timestamp': 1487271531, u'user': u'Dave'},
 {u'action': u'browse', u'timestamp': 1487271532, u'user': u'Dave'},
 {u'action': u'browse', u'timestamp': 1487271533, u'user': u'Dave'},
 {u'action': u'navigate', u'timestamp': 1487271534, u'user': u'Dave'}]

关于python - Python 中解析 JSON 的文件格式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48575709/

相关文章:

python - 哪个类应该存储查找表?

python - 神经网络训练平台中的梯度下降

python - Pandas 查找不连续数据的方法

javascript - 将 Json 放入 HTML 表格

c++ - 如何从不同程序的窗口获取窗口位置/大小?

python - 为什么我需要 "fftshift"DFT 的乘积来恢复卷积乘积

php - 我的 JSON 有什么问题

python - 没有名为 StringIO 的模块

Python 在列表中检查字典列表

javascript - 在 .getJson() 中传递同一参数的多个值