在lxml中,我使用xpath来选择表中的所有tr(具有不同的行数),除了包含乱码的最后两行。
是否存在排除最后两行的模式匹配?我正在查看xpath教程,显然有一个“except”运算符和一个“last()”,但似乎无法使我的代码正常工作。
到目前为止,我有这个。我该添加什么来使它排除最后两行?主要问题是tr的数量变化。
result = doc.xpath("//tr")
我想我可以把它变成一个列表,然后删除最后两个元素,但是有没有更简单/更优雅的解决方案?
提前致谢!
答案 0 :(得分:9)
使用强>:
expressionSelectingTheTable/tr[not(position() > last() -2)]
其中expressionSelectingTheTable
应替换为选择要为其提出问题的表的特定XPath表达式(例如//table[@id='foo']
)
此单个XPath表达式选择tr
父级的所有table
子级,其位置不是最后两个子级之一。
答案 1 :(得分:2)
result = doc.xpath("//tr")[0:-2]
应该做的伎俩。