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;如果某些商家没有电话键而不是停在那里给我这个错误?
非常感谢!
答案 0 :(得分:2)
当您使用字典并且不确定它是否包含某个键时,您可以使用get()
方法并指定默认值。在您的情况下,由于您希望在密钥不存在时返回None
,因此您可以使用get()
调用而不使用第二个参数。没有第二个参数的get()
默认返回None
。这就是你需要的:
n = business[i].get('phone', None)
如果“手机”密钥不存在,则会为n
分配None
,您可以稍后查看if n: