我正在处理一些xml文件。文件的模式指定只能存在某种类型的元素之一(在这种情况下,我正在使用脚注元素)。
脚注元素中可以有多个脚注元素,我试图抓取并处理脚注元素,以便我可以遍历它以发现脚注元素。
这是我目前的做法
def get_footnotes(element_list):
footnoteDict=od()
footnotes_element=[item for item in element_list if item.tag=='footnotes'][0]
for eachFootnote in footnotes_element.iter():
if eachFootnote.tag=='footnote':
footnoteDict[eachFootnote.values()[0]]=eachFootnote.text
return footnoteDict
element_list是迭代整个树后与我相关的元素列表
所以我想知道是否有更多的pythonic方式来获取脚注元素而不是遍历元素列表,在我看来,这是笨拙的
footnotes_element=[item for item in element_list if item.tag=='footnotes'][0]
答案 0 :(得分:2)
这样的事情应该可以胜任:
from lxml import etree
xmltree = etree.fromstring(your_xml)
for footnote in xmltree.iterfind("//footnotes/footnote"):
# do something
pass
如果您提供一些示例XML,则更容易提供帮助。
修改强>
如果您正在使用非常大的文件,则可能需要查看iterparse
。
这个问题似乎有一个很好的例子:python's lxml and iterparse method