#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. Боже, это сработало, и ваш ответ был таким быстрым. Большое спасибо. Я постараюсь разобраться в этом подробно.