Ошибка TypeError: 'bytes' object is not callable

Рейтинг: 1Ответов: 2Опубликовано: 27.12.2014

Пытаюсь написать программу для перевода слов, выдает ошибку. Не могу понять, как исправить.


Исходный код (Python 3.4):

#!/usr/bin/python -utt

     import requests
     import json


     url = "https://translate.yandex.net/api/v1.5/tr.json/translate"
     params = {}

     params['key'] = 'trnsl.1.1.20141226T121421Z.332bfe636323b4d7.d542040fe5056cc6ab6917ff946b80c703ac6ae6'
     params['lang'] = 'en-ru'



     params['text'] = '''The weather in England changes very quickly
     and very often'''
     result = json.loads(requests.get(url, params=params).content('utf8'))

     print(result['text'][0])

Выдает ошибку:

Traceback (most recent call last):
File "F:/test/test.py", line 17, in <module>
result = json.loads(requests.get(url, params=params).content('utf8'))
TypeError: 'bytes' object is not callable

Помогите исправить, пожалуйста!

Ответы

▲ 1Принят
result = json.loads(requests.get(url, params=params).content.decode(encoding='utf-8'))
▲ 2

Атрибут .content имеет тип bytes. Его нельзя вызвать. Пример объекта, который можно вызвать — обычная функция.

Чтобы распарсить JSON-ответ, вызовите метод .json(), наподобие такого:

import requests # $ pip install requests

r = requests.get('http://httpbin.org/get')
result = r.json()
print(result['origin'])