我想知道你是否可以帮助我处理我目前正在处理的一段代码。我是Python的新手,这是我试图编写的第一个主要脚本之一。
import json, sys
from pprint import pprint
#Importing workbench json output into the python script.
with open('jsonoutput.json') as data_file:
data = json.load(data_file)
#Sets the verible for the while loop.
x = int(0)
while x <= 1:
y = x
print type(data)
jdata = data["result"]["items"][y]["tagValues"]["IdDevicesMap"]["value"]
if setup_1(jdata) == True:
Default_1 += 1
else:
print "exiting"
运行时出错:
Traceback (most recent call last):
File "main.py", line 47, in <module>
jdata = data["result"]["items"][y]["tagValues"]["IdDevicesMap"]["value"]
KeyError: 'tagValues'
在旁边的注释中,当我手动输入列表编号[y]为1时,代码运行完美。所以它就像我将变量[y]输入到请求中的问题一样。
答案 0 :(得分:1)
此错误仅表示您没有名为"tagValues"
的密钥。如果您的json
看起来像这样,那么这将有效。
data = {"result":
{"items":
[ {"tagValues":
{"IdDevicesMap":
{"value":
{
#data
}
}
}
}
]
}
}
因此,要么您的数据看起来不像这样,要么就是这样,那么就会丢失名为"tagValues"
的密钥。
另一件事是告诉数据[“results”] [“items”]是列表还是JSON?
答案 1 :(得分:1)
我很确定你读过的json在每一个中都没有tagValues。您可能想尝试try
:和except:
import json, sys
from pprint import pprint
#Importing workbench json output into the python script.
with open('jsonoutput.json') as data_file:
data = json.load(data_file)
x = 0
while True:
try:
jdata = data["result"]["items"][x]["tagValues"]["IdDevicesMap"]["value"]
if setup_1(jdata) == True:
Default_1 += 1
else:
print "exiting"
break
except KeyError:
print data["result"]["items"][x]
pass
x+=1
以pythonic方式进行:
import json, sys
from pprint import pprint
#Importing workbench json output into the python script.
with open('jsonoutput.json') as data_file:
data = json.load(data_file)
for x, d in enumerate(data["result"]["items"]): #in case you need a counter
try:
jdata = d["tagValues"]["IdDevicesMap"]["value"]
if setup_1(jdata) == True:
Default_1 += 1
else:
print "exiting"
break
except KeyError:
pass