Бих искал да изравня lxml etree (по-специално, 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
спрете да гласувате, за да затворите. имам нужда от пълен, рекурсивен списък на всички елементи. т.е. tree.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
приемане за разбиране на списък: елементи = [ елемент за елемент в tree.iter()]. всъщност по-елегантен е list(tree.iter()).
- person Walrus the Cat; 07.10.2014