如何将xml转换为列表

时间:2012-01-13 11:05:10

标签: python list xml-parsing

我有一个XML树,如:

<abc>
    <cd>text1</cd>
    <cd>text2</cd>
    <ef>text3</ef>
    <ef>text4</ef>
</abc>

现在我想将其保存为包含以下元组的列表:[(text1,text3),(text2,text4)]

我该怎么做?

1 个答案:

答案 0 :(得分:3)

import xml.etree.cElementTree as ET
# import lxml.etree as ET   # also works

content = '''\
<abc>
    <cd>text1</cd>
    <cd>text2</cd>
    <ef>text3</ef>
    <ef>text4</ef>
</abc>'''

doc = ET.fromstring(content)
texts = (x.text for x in doc)
print(zip(*zip(*[texts]*2)))

产量

[('text1', 'text3'), ('text2', 'text4')]

说明:

您已经知道如何将XML解析为如下列表:

In [8]: [x.text for x in doc]
Out[8]: ['text1', 'text2', 'text3', 'text4']

要将项目分组为2,请使用grouper recipezip(*[iter]*2)

In [11]: zip(*[texts]*2)
Out[11]: [('text1', 'text2'), ('text3', 'text4')]

现在你可以再次使用zip来分组每个元组的第一个项目,然后是第二个项目等:

In [14]: zip(*zip(*[texts]*2))
Out[14]: [('text1', 'text3'), ('text2', 'text4')]