[英]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.