You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XPath中not()函数条件分组问题排查(Python lxml场景)

解决XPath筛选元素的逻辑错误问题

你的问题出在XPath的运算符优先级上——and的优先级比or高,所以你写的表达式实际逻辑是:

匹配文本为"something"的元素,或者文本为"something else"的元素,或者文本为"this other thing"且attrib属性不等于"A"的元素

这就导致前两类文本的元素,不管attrib是不是"A"都会被匹配到,这就是你看到不符合预期元素的原因。

正确的表达式写法

把所有文本匹配条件用括号包裹,确保它们整体和属性过滤条件用and关联:

xpath('//el[(text()="something" or text()="something else" or text()="this other thing") and not(@attrib="A")]')

更简洁的写法可以用XPath的多值匹配:

xpath('//el[text()=("something", "something else", "this other thing") and not(@attrib="A")]')

针对tok元素的示例

如果要筛选文本为"altres"且xpos属性不等于"DI0CP0"的tok元素,表达式可以写:

xpath('//tok[text()="altres" and not(@xpos="DI0CP0")]')

或者用!=:

xpath('//tok[text()="altres" and @xpos!="DI0CP0"]')

内容的提问来源于stack exchange,提问作者jfontana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 08:35:20