0

我正在尝试使用 Google Books Python API 客户端。这是我的简单代码片段:

for book in response.get('items', []):
    if not book['volumeInfo']['title'] or not book['volumeInfo']['authors']:
        continue
    else:
        print 'Title: %s, Author: %s' % (book['volumeInfo']['title'], book['volumeInfo']['authors'])

我正在尝试根据关键字从书籍列表中获取元数据。然而,它给了我

KeyError: 'authors'

我检查并发现 JSON 响应没有特定书籍的“作者”字段。我试图用上面的 if else 语句跳过那本书,但是没有用。当 JSON 响应中没有我期望的字段时,如何避免此类错误?

4

2 回答 2

0

我建议你使用get字典的方法来拔出你的钥匙。如果密钥不存在,您可以设置默认值:

book.get('volumeInfo', default=None)
于 2015-02-21T15:41:40.663 回答
0

您可以使用该dict.get()方法检索默认值,也可以使用成员资格测试来查看密钥是否存在:

for book in response.get('items', []):
    if 'title' not in book['volumeInfo'] or 'authors' not in book['volumeInfo']:
        continue
    print 'Title: %s, Author: %s' % (book['volumeInfo']['title'], book['volumeInfo']['authors'])
于 2015-02-21T15:45:30.780 回答