我目前正在尝试使用API来获取Buffalo中的数据,并将其从JSON URL返回,然后他们将其放入以下格式:经度、纬度和Viodesc。
然而,我认为我在迭代时遇到了困难,因为一些值没有纬度和经度,因此给了我一个'latitude'的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:
arr = []
arr.append(x["lattitude"])
arr.append(x["longtitude"])
arr.append(x["viodesc"])
return answer.append(ans)发布于 2018-11-07 13:00:56
您可以捕获异常'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)希望它能帮上忙!
发布于 2018-11-07 14:40:47
另一个不同的尝试是在追加之前进行检查:
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)https://stackoverflow.com/questions/53183253
复制相似问题