Как анализировать XML как Dictonary в Python

#json #dictionary

#json #словарь

Вопрос:

Я новичок в Python, и я пытался разобрать нижеприведенные имена, и мне было трудно это сделать.

Мне нужно проанализировать следующие имена…

 {"values":
    {"entries":"uri", "type":"xs:string", "unique-value":
        [{"entry":1, "fName":"/abc.txt"},
         {"entry":1, "fName":"/def.txt"},
         {"entry":1, "fName":"/xyz.txt"},
         {"entry":1, "fName":"/file.doc"},
         {"entry":1, "fName":"/file2.txt"}
        ]
    }
}
  

Вот мой код:

 for entry in j['values']['entries']:
    print entry['entry']['fName']
  

Ответ №1:

Я не совсем уверен, что вы имеете в виду под синтаксическим анализом, но если вы просто хотите получить значения fName, вы можете просто перебирать список следующим образом:

 import json
text = """{.....}"""
json_data = json.loads(text)
for value in json_data['values']['unique-value']:
    print "entry:", value['entry'], "-- fName:", value['fName']
  

Вывод:

 entry: 1 -- fName: /abc.txt
entry: 1 -- fName: /def.txt
entry: 1 -- fName: /xyz.txt
entry: 1 -- fName: /file.doc
entry: 1 -- fName: /file2.txt
  

Причина, по которой ваш код не работал, заключалась в том, что оба entry и fName оба являются ключами / значениями из одного и того же словаря. Это означает, что для работы вашего кода макет json должен выглядеть следующим образом:

 [{"entry": {"fName": "/abc.txt"}}, {"entry": {"fName": "/def.txt"}}]
  

Комментарии:

1. Боже, это сработало, и ваш ответ был таким быстрым. Большое спасибо. Я постараюсь разобраться в этом подробно.