我正在使用xml.etree.ElementTree解析XML file。我想找到基于name属性的元素。
fnd = root.findall("./player[@name='Pqp239']")
但是,这只会找到名称的完全匹配。您将如何查找其名称包含名称一部分的元素?所以会是这样的
fnd = root.findall("./player[@name='rob']")
会找到所有名称包含rob的元素,如下所示:
Rob
Robert
chifforobe
最佳答案
您可以使用contains()
function,但这仅在您切换到lxml.etree
而不是仅部分/有限XPath支持的xml.etree.ElementTree
时才有效:
import lxml.etree as ET
tree = ET.parse("input.xml")
root = tree.getroot()
root.xpath("./player[contains(@name, 'rob')]")
但是请注意,要使部分匹配不区分大小写,您需要另外应用
translate()
function:case insensitive xpath contains() possible?