【问题标题】:Cannot open JSON file used both load and loads command in python无法在 python 中同时使用加载和加载命令打开 JSON 文件
【发布时间】:2018-05-16 19:45:56
【问题描述】:

我已尝试加载和加载命令,但在加载我的 JSON 文件时仍然遇到相同的错误

import json
with open(photos.json) as f:
    data = json.load(f)

然后我得到错误

ValueError:额外数据:第 2 行第 1 列 - 第 206950 行第 1 列(字符 114 - 26888701)

当我使用这段代码时

import json
with open(photos.json) as f:
    data = json.loads(f)

我遇到错误

TypeError:预期的字符串或缓冲区

我无法解决这些错误,请帮忙。 谢谢

这是我的 json 文件的示例

{“caption”:“”,“photo_id”:“soK1szeyan202jnsGhUDmA”,“business_id”:“OnAzbTDn79W6CFZIriqLrA”,“label”:“inside”} {“标题”:“”,“photo_id”:“dU7AyRB_fHOZkflodEyN5A”,“business_id”:“OnAzbTDn79W6CFZIriqLrA”,“标签”:“内部”} {“标题”:“”,“photo_id”:“6T1qlbBdKkXA1cDNqMjg2g”,“business_id”:“OnAzbTDn79W6CFZIriqLrA”,“标签”:“外部”} {“caption”:“烘焙区”,“photo_id”:“lHhMNhCA7rAZmi-MMfF3ZA”,“business_id”:“OnAzbTDn79W6CFZIriqLrA”,“label”:“inside”} {“标题”:“”,“photo_id”:“oHSCeyoK9oLIGaCZq-wRJw”,“business_id”:“XaeCGHZzsMwvFcHYq3q9sA”,“标签”:“食物”} {“标题”:“”,“photo_id”:“EN9qzZpxfv00B_4X6q5lYA”,“business_id”:“XaeCGHZzsMwvFcHYq3q9sA”,“标签”:“食物”} {“标题”:“”,“photo_id”:“M6c0qxQQwWkUzAxIvoTFuQ”,“business_id”:“XaeCGHZzsMwvFcHYq3q9sA”,“标签”:“食物”} {“标题”:“”,“photo_id”:“876EKnk6deA7xA4i1aipJg”,“business_id”:“XaeCGHZzsMwvFcHYq3q9sA”,“标签”:“食物”} {“标题”:“”,“photo_id”:“NFCDwGr_-TEiw9bzx3nFKw”,“business_id”:“XaeCGHZzsMwvFcHYq3q9sA”,“标签”:“食物”}

【问题讨论】:

  • .loads(f) 永远不会工作,那就是负载 string。文件的内容是什么 - 你有多个 JSON 对象吗?
  • 您的文件不是有效的 JSON。它看起来像 JSON Lines,每行一个 JSON 对象。您必须遍历这些行并分别解析它们。如果对象不被线分隔,它会更难。
  • 我将如何遍历每一行?我将如何做到这一点?有没有可以将此文件转换为csv文件的代码?
  • 非常感谢我解决了它我逐行迭代它并将它保存在一个列表中。谢谢

标签: python json python-3.x


【解决方案1】:

对于这个问题,也许这不是一个好主意,但我们可以用 '}---{' 替换 '} {' 并用这个字符分割,然后我们创建一个包含所有迷你对象的列表你需要。试试吧,也许它会适合你,如果不是对不起。

import ast                                                                                                                                                                        

with open('./j.json') as f:
    data = f.readline().replace("} {", "}---{").split('---')

for value in [ast.literal_eval(x) for x in data]:
    print(value['photo_id'])

【讨论】:

  • 感谢您的帮助
猜你喜欢
  • 2011-09-14
  • 2011-04-29
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 2011-02-18
相关资源
最近更新 更多