【问题标题】:KeyError with a API call带有 API 调用的 KeyError
【发布时间】:2014-06-09 20:15:49
【问题描述】:

我正在尝试让这个脚本工作。我想得到一个同义词列表,但我总是得到同样的错误“第 26 行:KeyError:'term'。快让我发疯了!

import requests
import workflow
import console
import json

term = workflow.get_variable('term')

URL = 'http://openthesaurus.softcatala.org/synonyme/search?q=' + term +  '&format=application/json'

terms = requests.get(URL)

list = []

if terms.status_code == 500:
    console.hud_alert('No Synonyms Found', 'error', 1)
    workflow.stop()

elif terms.status_code == 200:
    console.show_activity('Construint la llista...')

    for element in terms.json()['metaData']['term']:
        list.extend(element['list']['synonyms'].split('|'))

    workflow.set_output('\n'.join(list))

【问题讨论】:

  • terms.json()['metaData'] 的字典没有名为“term”的键,但这应该很清楚,你的问题是什么?

标签: python json api


【解决方案1】:

您从检查网站是否正常运行(状态代码 200)到假设返回了包含“元数据”和“术语”元素的有效字典。糟糕的编码习惯。不要假设任何事情,尤其是如果它源自 ALIEN WORLDS(互联网/客户端/等)。

我建议您先确保这些元素存在,然后再尝试访问它们。

if 'metaData' in element:
    if 'term' in element['metaData']:
        list.extend(.......)

您会注意到“术语”确实不在您获取的字典中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多