lxml - 获取元素的平面列表
Posted
技术标签:
【中文标题】lxml - 获取元素的平面列表【英文标题】:lxml - get a flat list of elements 【发布时间】:2014-12-01 03:40:42 【问题描述】:我想展平一个 lxml etree(特别是 html,如果重要的话)。我将如何获得树中所有元素的平面列表?
【问题讨论】:
lxml.de/tutorial.html#tree-iteration How to get all sub-elements of an element tree with Python ElementTree?的可能重复 退出投票结束。我需要所有元素的完整递归列表。即 tree.flatten(). 【参考方案1】:您可以使用.iter()
方法,如下所示:
from lxml import etree
xml = etree.XML('''<html><body>
<p>hi there</p><p>2nd paragraph</p>
</body></html>''')
# If you want to visit all of the descendants
for element in xml.iter():
print element.tag
# Or, if you want to have a list of all the descendents
all_elements = list(xml.iter())
print [element.tag for element in all_elements]
【讨论】:
接受列表理解:elements = [ element for element in tree.iter()]。实际上,更优雅的是 list(tree.iter()) 。以上是关于lxml - 获取元素的平面列表的主要内容,如果未能解决你的问题,请参考以下文章