我目前正在尝试使用API在Buffalo中获取数据并从JSON URL返回数据,然后将其以以下格式放置:经度,纬度和Viodesc。
但是,由于某些值没有纬度和经度,因此我在迭代时遇到了困难,因此我得到KeyError
的{{1}}。
我不确定这是否是我代码中的错误以及如何进行更改
'latitude'
答案 0 :(得分:0)
您可以捕获未找到特定密钥时引发的异常'KeyError'。处理异常,以便即使缺少键,您也可以继续下一条记录,而无需停止代码。
代码段:
import json
from urllib import request
def get_ticket_data(string):
answer = []
urlData = string
webURL = request.urlopen(urlData)
data = webURL.read()
ans = json.loads(data.decode())
for x in ans:
try:
arr = []
arr.append(x["lattit**strong text**ude"])
arr.append(x["longtitude"])
arr.append(x["viodesc"])
except KeyError:
continue
return answer.append(ans)
希望有帮助!
答案 1 :(得分:0)
另一种尝试是在添加之前进行检查:
import json
from urllib import request
def get_ticket_data(string):
answer = []
urlData = string
webURL = request.urlopen(urlData)
data = webURL.read()
ans = json.loads(data.decode())
for x in ans:
arr = []
arr.append(x["lattit**strong text**ude"]) if x["lattit**strong text**ude""] else pass
arr.append(x["longtitude"]) if x["longitude"] else pass
arr.append(x["viodesc"]) if x["viodesc"] else pass
return answer.append(ans)
如果值以其他方式存在,则使用inline-if将使您追加,否则将不会追加。
这完全取决于您以后如何处理信息。另一种方法是在没有纬度的情况下用“”填充。对于这种方法,您可以执行以下操作:
import json
from urllib import request
def get_ticket_data(string):
answer = []
urlData = string
webURL = request.urlopen(urlData)
data = webURL.read()
ans = json.loads(data.decode())
for x in ans:
arr = []
arr.append(x["lattit**strong text**ude"]) if x["lattit**strong text**ude""] else ""
arr.append(x["longtitude"]) if x["longitude"] else ""
arr.append(x["viodesc"]) if x["viodesc"] else ""
return answer.append(ans)