Python xml.etree.ElementTree findall

Python xml.etree.ElementTree findall,python,xml,python-3.x,xml-parsing,Python,Xml,Python 3.x,Xml Parsing,我正在使用XML.etree.ElementTree解析XML。我想根据name属性查找元素 fnd = root.findall("./player[@name='Pqp239']") 但是,这只会找到名称的精确匹配项。如何查找名称包含名称一部分的元素?所以应该是这样的 fnd = root.findall("./player[@name='rob']") 将查找名称中包含rob的所有元素,如下所示: Rob Robert chifforobe 您可以使用,但这只有在您切换到而不是只有部

我正在使用XML.etree.ElementTree解析XML。我想根据name属性查找元素

fnd = root.findall("./player[@name='Pqp239']")
但是,这只会找到名称的精确匹配项。如何查找名称包含名称一部分的元素?所以应该是这样的

fnd = root.findall("./player[@name='rob']")
将查找名称中包含rob的所有元素,如下所示:

Rob
Robert
chifforobe
您可以使用,但这只有在您切换到而不是只有部分/有限XPath支持的
xml.etree.ElementTree
时才起作用:

但是请注意,要使部分匹配不区分大小写,您需要另外应用:


使用translate(),而不是键入整个字母表,可以使用[a-z]和[a-z]?@Pqp239不,但这并不是因为英语字母表经常变化:)我想我错过了一些新的findall功能;)我刚刚安装了lxml,得到了
ValueError:不支持带有编码声明的Unicode字符串。请使用无声明的字节输入或XML片段。
如何解决此问题?当我解析它时会发生这种情况。@Pqp239好的,请查看。
import lxml.etree as ET

tree = ET.parse("input.xml")
root = tree.getroot()

root.xpath("./player[contains(@name, 'rob')]")