python 如何修复使用json.load()加载json文件时的错误“JSONDecodeError:Expecting value:.”?

mcvgt66p  于 12个月前  发布在  Python
关注(0)|答案(5)|浏览(149)

我正在尝试加载JSON文件到我的笔记本电脑

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib as plt
import json
%matplotlib inline

with open("pud.json") as datafile:
  data = json.load(datafile)
dataframe = pd.DataFrame(data)

字符串
我得到以下错误

JSONDecodeError: Expecting value: line 1 column 1 (char 0)


请帮

gopyfrb3

gopyfrb31#

如果你想加载一个json文件,你也可以使用pandas.read_json()(尽管如果你的错误仅仅是因为你的json格式错误,那么这也不会有帮助)。

pandas.read_json("pud.json")

字符串
这将加载json作为一个框架。函数用法如下所示

pandas.read_json(path_or_buf=None, orient=None, typ='frame', dtype=True, convert_axes=True, convert_dates=True, keep_default_dates=True, numpy=False, precise_float=False, date_unit=None, encoding=None, lines=False, chunksize=None, compression='infer')


您可以在此处http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html获取有关参数的更多信息

iswrvxsc

iswrvxsc2#

使用JSON的另一种方式!

import pandas as pd
    import json
            
    with open('File_location.json') as f:  
      data = json.load(f)
    df=pd.DataFrame(data)

字符串

5fjcxozz

5fjcxozz3#

你在这里写的代码是完全正确的。问题是你正在加载的.json文件不是JSON文件。请检查该文件。

0h4hbjxa

0h4hbjxa4#

with open('pud.json', 'r') as file:
     variable_name = json.load(file)

字符串
json文件将作为python字典加载。

6tdlim6h

6tdlim6h5#

我也无法使用json模块加载文件:

File /srv/home/seid/miniconda3/lib/python3.9/json/decoder.py:353, in JSONDecoder.raw_decode(self, s, idx)
    344 """Decode a JSON document from ``s`` (a ``str`` beginning with
    345 a JSON document) and return a 2-tuple of the Python
    346 representation and the index in ``s`` where the document ended.
   (...)
    350 
    351 """
    352 try:
--> 353     obj, end = self.scan_once(s, idx)
    354 except StopIteration as err:
    355     raise JSONDecodeError("Expecting value", s, err.value) from None

JSONDecodeError: Invalid control character at: line 2 column 914 (char 915)

字符串
因此,我试着用Pandas,在其中一个答案,无济于事:

File ~/.local/lib/python3.9/site-packages/pandas/io/json/_json.py:1133, in FrameParser._parse_no_numpy(self)
   1129 orient = self.orient
   1131 if orient == "columns":
   1132     self.obj = DataFrame(
-> 1133         loads(json, precise_float=self.precise_float), dtype=None
   1134     )
   1135 elif orient == "split":
   1136     decoded = {
   1137         str(k): v
   1138         for k, v in loads(json, precise_float=self.precise_float).items()
   1139     }

ValueError: Unexpected character found when decoding array value (1)


然后,我在VSCode中以json的形式打开了这个文件,并检查了第2行第914列,发现在该列之后,有一个制表符而不是空格。
为了解决这个问题,我用正则表达式将所有的制表符替换为四个空格:


的数据

  • 旁注:我有一个json,里面有很多硬编码的\n换行符,我想我也应该把它们去掉,但是这些硬编码的\n并没有什么害处,你可以保留它们。

我保存了这个文件,再次上传了它(删除了原来的那个),并再次用json和pandas运行了代码。然而,pandas错误仍然没有改变,只有json错误是新的:

JSONDecodeError: Expecting value: line 11 column 5 (char 126773)


Ctrl + G11的那一行,我在列表的末尾发现了一个括号,就在前一行的括号之前,有一个错误的逗号:



没有逗号,在上传和重新编译后,代码同时运行了json和pandas。我只需要它作为json加载的字典,这样我就可以避免导入pandas。

相关问题