Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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_Parsing_Error Handling - Fatal编程技术网

在Python脚本中解析JSON数据时遇到问题

在Python脚本中解析JSON数据时遇到问题,python,json,parsing,error-handling,Python,Json,Parsing,Error Handling,我编写了我的第一个Python脚本(注意:我是Python新手),我试图解析一些JSON字符串,以便检索与特定JSON键相关的值,但我遇到了麻烦 在我的script.py文件中,我有以下内容: data = '{ "key1": "152", "key2": "da8fb07ace5512", "key3": "cfed379e13aebc" }' data_decoded = json.load(data) data["key1"] 当我使用命令pythonscript.py运行上述脚本时,

我编写了我的第一个Python脚本(注意:我是Python新手),我试图解析一些JSON字符串,以便检索与特定JSON键相关的值,但我遇到了麻烦

在我的
script.py
文件中,我有以下内容:

data = '{ "key1": "152", "key2": "da8fb07ace5512", "key3": "cfed379e13aebc" }'
data_decoded = json.load(data)
data["key1"]
当我使用命令
pythonscript.py
运行上述脚本时,我得到:

Traceback (most recent call last):
  File "/script.py", line 2, in <module>
    data_decoded = json.load(data)
  File "/usr/lib/python2.7/json/__init__.py", line 274, in load
    return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
Traceback (most recent call last):
  File "/script.py", line 3, in <module>
    data["key1"]
TypeError: string indices must be integers, not str

我不在乎它是字符串还是整数。我只想检索值。

对于字符串,必须使用
json.load()
,而不是
json.load()
,因为
load
用于文件和类似文件的对象。

json.load
需要类似文件名的对象。您希望使用从字符串加载的
json.loads

另见:


编辑:尝试
数据解码['152']
。您仍在尝试访问
数据
,JSON字符串

您已经声明了dictionary对象,只需将其从引号中去掉:

data = { "key1": "152", "key2": "da8fb07ace5512", "key3": "cfed379e13aebc" }
因为您已经有了一个字典,所以不需要执行json函数,只需引用数据即可:

data['key1']
但是,如果我误解了您的问题,并且您将数据作为json传递,python会将其识别为字符串,您需要对数据使用json.loads函数:

data['key1']
请注意,在发出data_decoded=json.loads(data)之后,您的字典对象不再是数据,实际上现在是data_decoded。您是否尝试过:

data_decoded['key1'] 


祝你好运

尝试使用
json.load()
而不是
json.load()
-解析字符串而不是文件流。“我不在乎它是字符串还是整数。”-它不是字符串或整数的值。您看到错误消息中的“索引”字了吗?您应该阅读并理解错误消息,这就是它们出现的原因。它们可以帮助您。
json.load
不需要文件名。它接受一个文件对象。@Backo现在请仔细阅读您的代码。你在做什么?你应该怎么做?我不明白你的问题。你到底是什么意思?@Backo我的意思是你应该阅读你的代码,想想它在做什么<代码>数据[“键1”]没有意义<代码>数据解码[“键1”]执行。请展示一下调试您自己的代码的努力,特别是因为这是一个小错误。