2016-12-12 3 views
0

Я пытаюсь выполнить функцию анализа настроений twitter из API Datumbox и продолжать иметь проблему. Моя функция для вызова API выглядит так:Ошибка ключа Python JSON

def call(text): 
    api_key = '<my_api_key>' 
    base_url = "http://api.datumbox.com/1.0/TwitterSentimentAnalysis.json?" 
    response = requests.get(base_url+'api_key='+api_key+'&'+'text='+text) 
    data = response.json() 
    result = data['output']['result'] 
    return result 

В большинстве случаев эта функция работает. Тем не менее, я продолжаю получать KeyError: «результат» как ошибку, когда я пытаюсь запустить функцию через пару сотен раз. Ниже приводится документация по API:

JSON Response: 
{ 
"output": { 
"status": 1, 
"result": "positive" 
} 
} 

JSON «результат» значение: В этой функции возможных значения вышеуказанного поля результата JSON являются: «положительный», «отрицательный» или «нейтральный»

Кто-нибудь знает, что может быть неправильно с моей функцией?

+1

Возможно, это документация, но что такое * фактическое * значение данных в вашем скрипте? –

+0

http://www.datumbox.com/files/API-Documentation-1.0v.pdf - Вот ссылка на документацию. Я хочу, чтобы моя функция взяла строку и вернула либо «положительный» отрицательный или нейтральный, – brianhalperin

ответ

2

Из документации по API:

If an error occurs while executing your call, our API will return a status of 0. In that case it results also the error code and the error message. Here is how an Error Reply looks like:

{ 
    "output": { 
    "status": 0, 
    "error": { 
     "ErrorCode": 6, 
     "ErrorMessage": "Invalid Account" 
    } 
} 

Вы хотите первый проверки, если status установлен в 1, прежде чем пытаться получить доступ к ключу result, потому что если status установлен в 0 не будет быть таким ключом:

data = response.json() 
if data['output']['status']: 
    return data['output']['result'] 
else: 
    raise SomeException(
     'Failed to get a result, error {0[ErrorCode]}, {0[ErrorMessage]!r}'.format(
      data['output']['error'])) 
Смежные вопросы