首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyError:“态度”

KeyError:“态度”
EN

Stack Overflow用户
提问于 2018-11-07 11:36:34
回答 2查看 1.8K关注 0票数 0

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

然而,我认为我在迭代时遇到了困难,因为一些值没有纬度和经度,因此给了我一个'latitude'KeyError

我不确定这是否是我代码中的错误,也不知道如何更改它

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2018-11-07 13:00:56

您可以捕获异常'KeyError‘,该异常在未找到特定键时引发。处理异常,这样即使键丢失,您也可以继续执行下一条记录,而不会停止代码。

代码片段:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-11-07 14:40:47

另一个不同的尝试是在追加之前进行检查:

代码语言:javascript
复制
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将允许你追加,否则它不会追加。

这将完全取决于您如何处理后面的信息。另一种方法是在没有纬度的情况下用"“填充它。对于这种方法,您可以这样做:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53183253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档