Python JSON Google Translator проблема извлечения

Я пытаюсь извлечь объект JSON в Python с помощью Simplejson. Но я получаю следующую ошибку.

Traceback (most recent call last):
  File "Translator.py", line 42, in <module>
    main()
  File "Translator.py", line 38, in main
    parse_json(trans_text)
  File "Translator.py", line 27, in parse_json
    result = json['translations']['translatedText']
TypeError: list indices must be integers, not str

Это мое JSON объект выглядит так,

{'translations': [{'translatedText': 'fleur'}, {'translatedText': 'voiture'}]}

и это мой кусок кода на Python для него.

def parse_json(trans_text):   
    json = simplejson.loads(str(trans_text).replace("'", '"'))    
    result = json['translations']['translatedText']
    print result

есть идеи по этому поводу?

2 ответа

Решение

json['translations'] это список по вашему определению, поэтому его индексы должны быть целыми числами

чтобы получить список переводов:

translations = [x['translatedText'] for x in json['translations']]

по-другому:

translations  = map(lambda x: x['translatedText'], json['translations'])

json['translations'] это список объектов. Чтобы извлечь 'translatedText' собственность, вы можете использовать itemgetter:

from operator import itemgetter

print map(itemgetter('translatedText'), json['translations'])

Смотрите реализацию detect_language_v2() для другого примера использования.

Другие вопросы по тегам