KeyError:“纬度”

时间:2018-11-07 03:36:34

标签: python-3.x api

我目前正在尝试使用API​​在Buffalo中获取数据并从JSON URL返回数据,然后将其以以下格式放置:经度,纬度和Viodesc。

但是,由于某些值没有纬度和经度,因此我在迭代时遇到了困难,因此我得到KeyError的{​​{1}}。

我不确定这是否是我代码中的错误以及如何进行更改

'latitude'

2 个答案:

答案 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)