Python 如何在列表中找到具有属性的元素?

Python 如何在列表中找到具有属性的元素?,python,xpath,lxml,Python,Xpath,Lxml,如何在python上使用lxml查找具有不同属性的元素 比如说 <Form> <Subform ind="0"> <Check ind="0">0</Check> <Check ind="1">1</Check> <Check ind="2">2</Check> <Check ind="3">3</Check&g

如何在python上使用lxml查找具有不同属性的元素

比如说

<Form>
    <Subform ind="0">
        <Check ind="0">0</Check>
        <Check ind="1">1</Check>
        <Check ind="2">2</Check>
        <Check ind="3">3</Check>
    </Subform>
</Form>
要获得第一个:

tree.findall("./Form/Subform/Check[@ind='0']")
但我想做的是

tree.findall("./Form/Subform/Check[@ind='0' or @ind='1']")
仅检索第一个和第二个(或第一个和最后一个)

我怎样才能用lxml做到这一点

tree.findall(“./Form/Subform/Check[@ind='0'或@ind='1']”

表达式有效,这将在
lxml
xpath()
方法中使用。如果要使其“可伸缩”,可以动态构造表达式:


该表达式是正确的,但您需要使用提供完整xpath 1.0支持的
xpath()
方法
findall()
只支持XPath的有限子集,因为
xml.etree.ElementTree
执行以下操作:

tree.xpath("/Form/Subform/Check[@ind='0' or @ind='1']")

不要认为这是一个重复的问题-这只是findall vs xpath的问题。
values = ["0", "1"]
condition = " or ".join("@ind = '%s'" % value for value in values)
print(root.xpath("//Subform/Check[%s]" % condition))
tree.xpath("/Form/Subform/Check[@ind='0' or @ind='1']")