Yelp API KeyError - 如何跳过没有某些密钥的企业

时间:2014-07-07 05:36:47

标签: python json api dictionary yelp

Python 2.7

我正在尝试获取',' url',' display_address'和'电话'来自Yelp API的某些区域的餐厅的关键。

我的代码确实打印了我要查找的信息,直到它找到没有电话的餐馆。我猜,因为它返回了这个错误:

> Traceback (most recent call last):   File "/Users/git-folder/api2.py",
> line 175, in <module>
>     print yelp_query(zipcode[i])   File "/Users/git-folder/api2.py", line 166, in yelp_query
>     phone = business[i]["phone"] KeyError: 'phone'

我的代码:

def yelp_query(zip_code):
    client = YelpClient(yelp_keys = keys)
    result_json = client.search_by_location(
    location = str(zip_code), term = 'BBQ',
    sort = YelpClient.SortType.BEST_MATCHED, radius=2)
    business = result_json["businesses"]


    for i in range(0,len(business)):
        n = business[i]["name"]
        add = str(business[i]["location"]["display_address"]).replace("[","").replace("]","").replace("u'","").replace("'","")
        url = business[i]["url"]
        phone = business[i]["phone"]
        print n, ";",url,";",add,";",phone

我如何写一个&#39; IF&#39;声明只是打印&#39;无&#39;如果某些商家没有电话键而不是停在那里给我这个错误?

非常感谢!

1 个答案:

答案 0 :(得分:2)

当您使用字典并且不确定它是否包含某个键时,您可以使用get()方法并指定默认值。在您的情况下,由于您希望在密钥不存在时返回None,因此您可以使用get()调用而不使用第二个参数。没有第二个参数的get()默认返回None。这就是你需要的:

n = business[i].get('phone', None)

如果“手机”密钥不存在,则会为n分配None,您可以稍后查看if n: