当前位置: 首页 > 知识库问答 >
问题:

无法在python中加载json文件[重复]

通俊发
2023-03-14

我正试图使用pandas library的read\u json()和python的内置json库从python中的此链接加载数据集,该数据集存储在我的计算机中(与我的笔记本相同的文件夹)。以下是我的代码:

import json
import pandas as pd
path='https://s3.amazonaws.com/istarsshare/normround1.json'
data=pd.read_json(path,orient='columns')
data.head(10)

另一个是:

import json
with open("normround1.json", "r") as read_it: 
data = json.load(read_it) 

在第一种情况下,我得到以下错误:

ValueError                                Traceback (most recent call last) <ipython-input-12-a81b255c7afd> in <module>
      1 path='https://s3.amazonaws.com/istarsshare/normround1.json'
----> 2 data=pd.read_json(path,orient='columns')
      3 data.head(10)
      4 #with open("normround1.json", "r") as read_it:
      5      #data = json.load(read_it)
 
~/anaconda3/lib/python3.7/site-packages/pandas/io/json/_json.py in read_json(path_or_buf, orient, typ, dtype, convert_axes, convert_dates, keep_default_dates, numpy, precise_float, date_unit, encoding, lines, chunksize, compression)
    590         return json_reader
    591 
--> 592     result = json_reader.read()
    593     if should_close:
    594         try:
 
~/anaconda3/lib/python3.7/site-packages/pandas/io/json/_json.py in read(self)
    715             obj = self._get_object_parser(self._combine_lines(data.split("\n")))
    716         else:
--> 717             obj = self._get_object_parser(self.data)
    718         self.close()
    719         return obj
 
~/anaconda3/lib/python3.7/site-packages/pandas/io/json/_json.py in _get_object_parser(self, json)
    737         obj = None
    738         if typ == "frame":
--> 739             obj = FrameParser(json, **kwargs).parse()
    740 
    741         if typ == "series" or obj is None:
 
~/anaconda3/lib/python3.7/site-packages/pandas/io/json/_json.py in parse(self)
    847 
    848         else:
--> 849             self._parse_no_numpy()
    850 
    851         if self.obj is None:
 
~/anaconda3/lib/python3.7/site-packages/pandas/io/json/_json.py in _parse_no_numpy(self)
   1091         if orient == "columns":
   1092             self.obj = DataFrame(
-> 1093                 loads(json, precise_float=self.precise_float), dtype=None
   1094             )
   1095         elif orient == "split":

ValueError: Trailing data

在第二种情况下,我得到:

---------------------------------------------------------------------------
JSONDecodeError                           Traceback (most recent call last) <ipython-input-13-b4c6a39520ca> in <module>
      3 #data.head(10)
      4 with open("normround1.json", "r") as read_it:
----> 5      data = json.load(read_it)
 
~/anaconda3/lib/python3.7/json/__init__.py in load(fp, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    294         cls=cls, object_hook=object_hook,
    295         parse_float=parse_float, parse_int=parse_int,
--> 296         parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
    297 
    298 
 
~/anaconda3/lib/python3.7/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    346             parse_int is None and parse_float is None and
    347             parse_constant is None and object_pairs_hook is None and not kw):
--> 348         return _default_decoder.decode(s)
    349     if cls is None:
    350         cls = JSONDecoder

~/anaconda3/lib/python3.7/json/decoder.py in decode(self, s, _w)
    338         end = _w(s, end).end()
    339         if end != len(s):
--> 340             raise JSONDecodeError("Extra data", s, end)
    341         return obj
    342 

JSONDecodeError: Extra data: line 2 column 1 (char 161)

我正在Ubuntu 18.04中使用jupyter笔记本

共有2个答案

贺栋
2023-03-14

我修复了进入vi的文件,这样做(它在每行末尾添加了一个逗号):

:%s/$/,/g

添加然后添加一个[到文件的开头,并添加一个]到文件的结尾。之后我就可以加载它了。

阎星河
2023-03-14

它不是JSON文件,而是多JSON文件-每一行都是JSON数据

标准工具无法读取它,您必须分别获取每一行并作为JSON使用

import json

data = []

with open('normround1.json') as fh:
    for line in fh:
        data.append(json.loads(line))

#print(data)
print(data[0]['_id'])
print(data[0]['message'])
 类似资料:
  • 我正在尝试使用JSON加载一些JSON数据。load(),但我一直收到一条错误消息,我不知道如何修复它。 这是json文件的一部分示例,有已删除的推文(以{"delete":{开头)和已创建的推文(以{"created_at":开头): 我的最终目标是从该文件中提取推文的文本,但为此,我需要将其作为json文件加载到python上,所以这就是我迄今为止所尝试的: 这是我收到的错误消息: 似乎有额外

  • 我有问题从api接收数据与所有其他链接,这是可以的,但这一个是如此困难…这是代码 这是我正在使用的php代码。 在控制台上显示日志---->XMLHttpRequest无法加载文件:///d:/install/xampp/htdocs/allinone/proxy.php?url=https://na.api.pvp.n…pectatorgameinfo/NA1/26667724?api_key=

  • 问题内容: 我是PostgresSQL的新手,我正尝试加载以下格式的数据: 记录超过1万,某些列可能包含NULL数据。当我尝试这样做时: 我收到以下错误:ERROR:最后一个预期的列SQL状态之后的多余数据:22P04 我已经检查了列,它们还可以。这意味着不会遗漏任何列。 希望有人能帮忙。提前谢谢。 问题答案: 应该是 对我有用

  • 问题内容: 这是我尝试将Maven项目部署到tomcat时遇到的错误 错误: 但是WEB-INF \ lib中有javax.servlet-api-3.0.1.jar 问题答案: 信息:validateJarFile(D:\ Softwares \ tomcat \ apache-tomcat-7.0.50 \ webapps \ myWebApp_1 1 \ WEB-INF \ lib \ ja

  • 问题内容: 我的代码在构造后的某个地方: 我尝试了这个: 项目结构 : 题: webpack如何复制到? 问题答案: 您用于请求JSON文件,而这只会在运行时发生。此外,webpack只处理导入的任何内容。您希望它可以处理函数的参数,但是如果webpack这样做,则函数的每个参数都将被视为模块,这会破坏该函数的其他用途。 如果您希望装入程序启动,则可以导入文件。 您还可以导入JSON并直接使用它,

  • 由于某种原因,我无法将FXML文件中定义的节点加载到实例变量中。我制作了这两个测试文件: 和都被打印为而它们本应被注入FXML文件中定义的节点,有人知道这里出了什么问题吗?当我在Scene Builder中编辑FXML文件时,controller类和字段都被找到并识别,所以应该不会有任何问题。