Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python读取JSON文件_Python_Json - Fatal编程技术网

使用Python读取JSON文件

使用Python读取JSON文件,python,json,Python,Json,我有一个名为“elements.JSON”的JSON文件: [ {ldraw="003238a",lgeo="003238a",slope=0,anton=0,lutz=0,owen=0,damien=0}, {ldraw="003238b",lgeo="003238b",slope=0,anton=0,lutz=0,owen=0,damien=0}, {ldraw="003238c",lgeo="003238c",slope=0,anton=0,lutz=0,owen=0,damien=0},

我有一个名为“elements.JSON”的JSON文件:

[
{ldraw="003238a",lgeo="003238a",slope=0,anton=0,lutz=0,owen=0,damien=0},
{ldraw="003238b",lgeo="003238b",slope=0,anton=0,lutz=0,owen=0,damien=0},
{ldraw="003238c",lgeo="003238c",slope=0,anton=0,lutz=0,owen=0,damien=0},
{ldraw="003238d",lgeo="003238d",slope=0,anton=0,lutz=0,owen=0,damien=0}
]
我有一个名为“test.py”的Python文件:

import json

with open('elements.json') as json_file:  
    data = json.load(json_file)
    for p in data:
        print('ldraw: ' + p['ldraw'])
        print('lgeo: ' + p['lgeo'])
从Windows命令行运行时出现以下错误:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    data = json.load(json_file)
  File "C:\Python27\lib\json\__init__.py", line 278, in load
    **kw)
  File "C:\Python27\lib\json\__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 2 column 2 (char 3)
回溯(最近一次呼叫最后一次):
文件“test.py”,第4行,在
data=json.load(json_文件)
文件“C:\Python27\lib\json\\ uuuuu init\uuuuuu.py”,第278行,已加载
**千瓦)
文件“C:\Python27\lib\json\\ uuuuu init\uuuuuu.py”,第326行,加载
返回\u默认\u解码器。解码
文件“C:\Python27\lib\json\decoder.py”,第366行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“C:\Python27\lib\json\decoder.py”,第382行,原始解码
obj,end=self.scan_一次(s,idx)
ValueError:应为属性名称:第2行第2列(字符3)

需要什么属性名?为什么会出现错误?

您没有遵循JSON规范。有关详细信息,请参阅

[
{“ldraw”:“003238a”,“lgeo”:“003238a”,“斜率”:0,“安东”:0,“卢茨”:0,“欧文”:0,“达米恩”:0},
{“ldraw”:“003238b”,“lgeo”:“003238b”,“slope”:0,“anton”:0,“lutz”:0,“owen”:0,“damien”:0},
{“ldraw”:“003238c”,“lgeo”:“003238c”,“斜率”:0,“安东”:0,“卢茨”:0,“欧文”:0,“达米恩”:0},
{“ldraw”:“003238d”,“lgeo”:“003238d”,“斜率”:0,“安东”:0,“卢茨”:0,“欧文”:0,“达米恩”:0}
]
您的Python代码是正确的


您的
ldraw
lgeo
值看起来像十六进制;JSON不支持十六进制,您必须自己完成额外的工作。

[编辑:它们不是]

您的文件元素。json不是有效的json文件。 应该是这样的-

[{"ldraw":"003238a","lgeo":"003238a"}]

您的JSON格式无效,JSON代表JavaScript对象符号,就像JavaScript对象一样。因此,您应该将“=”替换为“:”。它意味着键值对

错:

ldraw="003238a"
ldraw: 003238a // if no quote, the value should be the digit only.
对:

ldraw: "003238a"
ldraw: { "example-key": "value" }
ldraw: "True"

您的json无效,因为分配使用“:”而不是“=”。你可以使用这个工具来验证你的数据是否有效。我在这里查看加载文档,试图弄清楚这是否是一个奇怪的语法边缘情况。抢手货对不起,是“-”号。这实际上已经在我的JSON文件中修复,因此与错误无关。@posfan12此外,键必须是字符串,通过示例将
ldraw
更改为
“ldraw”
您是正确的。它不是十六进制的。这只是一个普通的字符串。