Python JSON Google Translator проблема извлечения - PullRequest
0 голосов
/ 12 апреля 2011

Я пытаюсь извлечь объект 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 ]

1 голос
/ 12 апреля 2011

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

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

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

другим способом:

translations  = map(lambda x: x['translatedText'], json['translations'])
0 голосов
/ 12 апреля 2011

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

from operator import itemgetter

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

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

...