栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ElementTree-findall以递归方式选择所有子元素

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ElementTree-findall以递归方式选择所有子元素

报价

findall

Element.findall()
仅查找带有标签的元素,这些标签是当前元素的直接子元素。

由于它只能找到直系孩子,因此我们需要递归地找到其他孩子,像这样

>>> import xml.etree.ElementTree as ET>>> >>> def find_rec(node, element, result):...     for item in node.findall(element):...         result.append(item)...         find_rec(item, element, result)...     return result... >>> find_rec(ET.parse("h.xml"), 'saybye', [])[<Element 'saybye' at 0x7f4fce206710>, <Element 'saybye' at 0x7f4fce206750>, <Element 'saybye' at 0x7f4fce2067d0>]

更好的是,使其成为生成器函数

>>> def find_rec(node, element):...     for item in node.findall(element):...         yield item...         for child in find_rec(item, element):...  yield child... >>> list(find_rec(ET.parse("h.xml"), 'saybye'))[<Element 'saybye' at 0x7f4fce206a50>, <Element 'saybye' at 0x7f4fce206ad0>, <Element 'saybye' at 0x7f4fce206b10>]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639792.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号