Как выбрать все tr, кроме последних двух tr

В lxml я использую xpath, чтобы выбрать все tr в таблице (которая имеет различное количество строк), за исключением двух последних строк, которые содержат бессмысленные слова.

Есть ли совпадение с образцом, которое исключает последние две строки? Я просматривал учебники по xpath и, по-видимому, есть оператор "кроме", а также "последний ()", но не могу заставить мой код работать.

Пока у меня есть это. Что мне добавить к этому шаблону, чтобы исключить последние две строки? Основная проблема заключается в том, что количество ТР варьируется.

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

Я думаю, я мог бы превратить это в список и просто удалить последние два элемента, но есть ли более простое / элегантное решение?

Заранее спасибо!

2 ответа

Решение
result = doc.xpath("//tr")[0:-2]

Должен сделать свое дело.

Используйте:

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

где expressionSelectingTheTable следует заменить конкретным выражением XPath, которое выбирает таблицу, для которой задается вопрос (например, //table[@id='foo'])

Это единственное выражение XPath выбирает все tr дети table родитель, чья позиция не является одной из двух последних.

Другие вопросы по тегам