查看: 1860|回复: 2

ValueError: Extra data: line 2 column 1 - line 225116 column 1 (char 232 - 16...

[复制链接]

10

主题

72

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2018-9-19 14:21:01 | 显示全部楼层 |阅读模式
我试图在Python中加载和解析JSON文件。:
  1. import json
  2. json_data = open('file')
  3. data = json.load(json_data)
复制代码

报了如下的错误
ValueError: Extra data: line 2 column 1 - line 225116 column 1 (char 232 - 160128774)
回复

使用道具 举报

4

主题

33

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2018-9-19 14:26:23 | 显示全部楼层
说明你有一个JSON Lines格式的文本文件。你需要逐行解析文件:
  1. import json

  2. data = []
  3. with open('file') as f:
  4.     for line in f:
  5.         data.append(json.loads(line))
复制代码

每行包含有效的JSON,但作为一个整体,它不是有效的JSON值,因为没有外层的列表或对象。
请注意,因为该文件每行包含JSON,所以你可以省去尝试一次性解析它或者找出流式JSON解析器的麻烦。你现在可以选择单独处理每一行,然后再继续下一步,从而节省内存。你可能不希望将每个结果附加到一个列表中,然后在文件非常大的情况下处理所有内容。
如果你有一个包含单个JSON对象的文件,其间有分隔符,请使用如何使用'json'模块一次读入一个JSON对象?使用缓冲方法解析单个对象。
回复

使用道具 举报

4

主题

33

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2018-9-19 14:27:17 | 显示全部楼层
这是因为jso文件格式不对。每行有一个JSON对象,但它们没有包含在更大的数据结构(即数组)中。你需要重新格式化它给每行末尾添加逗号,给头添加[,给尾添加]。或者逐行解析它作为单独的字典。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表