2014-11-26 3 views
0

Извините, я чувствую, что это может быть общий вопрос о нобе, однако то, что я пробовал, похоже, не работает.Object Returns Two Dict Как я могу смотреть только на одном Dict

У меня есть файл XML с парой из следующих разделов:

<ns:ServiceTechnicianParty> 
     <ns:SpecifiedPerson> 
     <ns:ID>TECH005</ns:ID> 
     <ns:GivenName>Technician 005</ns:GivenName> 
     <ns:FamilyName>Technician 005</ns:FamilyName> 
     </ns:SpecifiedPerson> 
    </ns:ServiceTechnicianParty> 

Мой читать это выглядит следующим образом:

for specified_person in soup.find_all('ns:servicetechnicianparty'): 
    person = {child.name: child.text for child in specified_person.findChildren()} 
    print person 

Который возвращает:

{'ns:givenname': u'Technician 001', 'ns:specifiedperson': u'\nTECH001\nTechnician 001\nTechnician 001\n', 'ns:familyname': u'Technician 001', 'ns:id': u'TECH001'} 
{'ns:givenname': u'Technician 005', 'ns:specifiedperson': u'\nTECH005\nTechnician 005\nTechnician 005\n', 'ns:familyname': u'Technician 005', 'ns:id': u'TECH005'} 

Так что я хотел бы знать, как я могу получить 1 dict за один раз, поскольку я пытаюсь сравнить что находится в XML для того, что отображается в моей программе?

ответ

0

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

peoples = [] 
for specified_person in soup.find_all('ns:servicetechnicianparty'): 
    person = {child.name: child.text for child in specified_person.findChildren()} 
    for people in person: 
     peoples.append(person) 
print peoples[0] 

Еще раз спасибо Бенджамину Друри за то, что вдохновили эту идею.

1

Значит, это возвращает список dicts? Если это так, вы должны иметь доступ только один за раз, указав его. Попробуйте print person[0], чтобы проверить, что он на самом деле делает здесь.

+0

Он не возвращает список dicts, он возвращает два dicts, однако вы дали мне идею. Сделать список диктонов. Я создал 'person = [{}] ', теперь он возвращает два списка со словарем внутри них. – DarthOpto

Смежные вопросы