2015-02-21 8 views
0

Я пытаюсь использовать клиент API Python Google Books. Вот мой простой фрагмент кода:python keyError при разборе JSON

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 нет поля, как я ожидаю?

ответ

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']) 
+0

спасибо, он отлично работал! – user3450161

0

Предлагаю вам использовать словари get, чтобы вытащить ключи. Вы можете установить по умолчанию упаковывает ключ не существует:

book.get('volumeInfo', default=None) 
Смежные вопросы