【问题标题】:How to parse a 'JSON string' file in Python? [closed]如何在 Python 中解析“JSON 字符串”文件? [关闭]
【发布时间】:2016-08-08 04:27:28
【问题描述】:

我正在研究与this topic 非常相似的东西。我下载了一个看起来像是 JSON 文件的文件。但是当我在记事本中打开它时,我发现它是一个很长的字典列表。该文件基本上如下所示:

[
{'time':1, 'value':100},
{'time':2, 'value':105},
{'time':3, 'value':120}
]

我尝试像这样将这个“JSON 文件”加载到 Python 中:

import json
with open('data.json') as data_file:
    data = json.loads(data_file)

但出现错误:

TypeError: expected string or buffer

如何将此文件正确加载到 Python 中?我想遍历每一行以提取所有“值”。谢谢!

【问题讨论】:

  • 要使用json.loads,您需要读取文件...即data = json.loads(data_file.read())
  • 通过这样做,我得到了与使用json.load() 时相同的错误,正如下面@Rushy 所建议的那样。该文件共有 85473 行,第一行为[,最后一行为]。前后没有引号。我认为它本质上是一个列表对象。

标签: python json file import io


【解决方案1】:

使用json.load:

with open('data.json') as data_file:
    data = json.load(data_file)

json.loadjson.loads 之间的主要区别在于,json.load 接受一个文件(或类似文件的对象)来读取和加载 JSON,而 json.loads 从字符串加载 JSON。

【讨论】:

  • 谢谢@Rushy。我使用了json.load(),但仍然出现错误:ValueError: Extra data: line 371 column 2 - line 85473 column 2 (char 196700 - 43922174)。第 85473 行是最后一行。该文件的第一行是[,最后一行是]。前后没有引号。
  • @user3768495 您的 JSON 文件很可能不是有效的 JSON。 ]后面还有什么吗?
  • 不,没什么。该文件就像我在上面的问题中展示的示例一样,只是多了很多行。
  • 我刚刚用 rjson 包成功读取了 R 中的文件。只有两行:data_file <- ("data.json")data <- fromJSON(file = data_file)。但是如果我这样做:data <- fromJSON(paste(readLines(data_file), collapse = "")),它会抛出一个错误说incomplete final line found。这些信息有帮助吗?
猜你喜欢
  • 2014-01-06
  • 2014-01-04
  • 2021-05-24
  • 1970-01-01
  • 2016-02-02
  • 2020-12-21
  • 2017-11-06
  • 1970-01-01
  • 2015-06-25
相关资源
最近更新 更多