[英]xml.etree.ElementTree findall
我正在使用xml.etree.ElementTree解析 XML文件。 我想根据 name 属性查找元素。
fnd = root.findall("./player[@name='Pqp239']")
但是,这只会找到名称的完全匹配项。 您将如何查找名称包含名称一部分的元素? 所以它会是这样的
fnd = root.findall("./player[@name='rob']")
会找到所有名称包含 rob 的元素,如下所示:
Rob
Robert
chifforobe
您可以使用contains()
函数,但这仅在您切换到lxml.etree
而不是xml.etree.ElementTree
,后者仅具有部分/有限的 XPath 支持:
import lxml.etree as ET
tree = ET.parse("input.xml")
root = tree.getroot()
root.xpath("./player[contains(@name, 'rob')]")
但请注意,要使部分匹配不区分大小写,您需要另外应用translate()
函数:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.