如何选择除了最后两个tr之外的所有tr?

3 投票
2 回答
2598 浏览
提问于 2025-04-16 11:37

在lxml中,我正在使用xpath来选择一个表格中的所有元素(这个表格的行数不固定),不过我想排除最后两行,因为那两行是一些无意义的内容。

有没有什么方法可以匹配到所有行,但不包括最后两行呢?我查了一些xpath的教程,发现有一个“except”操作符,还有一个“last()”函数,但我就是搞不定我的代码。

到目前为止,我有这个代码。我应该在这个模式中添加什么,才能排除最后两行呢?主要的问题是的数量是不一样的。

result = doc.xpath("//tr")

我想我可以把这些行变成一个列表,然后直接去掉最后两个元素,但有没有更简单或者更优雅的解决办法呢?

提前谢谢大家!

2 个回答

9

使用方法

expressionSelectingTheTable/tr[not(position() > last() -2)]

这里的 expressionSelectingTheTable 需要替换成一个具体的 XPath 表达式,用来选择你想要的表格,比如 //table[@id='foo']

这个 XPath 表达式会选择所有属于这个 tabletr 子元素,但不包括最后两个。

2
result = doc.xpath("//tr")[0:-2]

应该能解决问题。

撰写回答