对象返回两个词典如何只查看一个词典

时间:2014-11-26 21:56:31

标签: xml python-2.7 beautifulsoup

抱歉,我觉得这可能是一个彻头彻尾的noob问题,但是我尝试过的东西似乎并没有起作用。

我有一个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'}

所以我想知道的是,当我尝试比较XML中的内容与程序中显示的内容时,如何一次获得1 dict

2 个答案:

答案 0 :(得分:1)

所以它返回了一系列的词汇?如果是这种情况,您应该只能通过指定一个访问一个。尝试print person[0]只是为了检查它在这里做了什么。

答案 1 :(得分: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]

再次感谢Benjamin Drury启发这个想法。