Я хотел бы сгладить etree lxml (в частности, HTML, если это имеет значение). Как мне получить плоский список всех элементов в дереве?
lxml — получить плоский список элементов
comment
lxml.de/tutorial.html#tree-iteration
- person Robᵩ   schedule 06.10.2014
comment
возможный дубликат Как получить все подэлементы дерева элементов с Python ElementTree?
- person Cory Kramer   schedule 06.10.2014
comment
выйти из голосования, чтобы закрыть. мне нужен полный, рекурсивный список всех элементов. то есть дерево.flatten().
- person Walrus the Cat   schedule 07.10.2014
Ответы (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]
person
Robᵩ
schedule
06.10.2014
принятие для понимания списка: elements = [элемент для элемента в tree.iter()]. на самом деле более элегантным является list(tree.iter()) .
- person Walrus the Cat; 07.10.2014