Как выбрать все tr, кроме последних двух tr
В lxml я использую xpath, чтобы выбрать все tr в таблице (которая имеет различное количество строк), за исключением двух последних строк, которые содержат бессмысленные слова.
Есть ли совпадение с образцом, которое исключает последние две строки? Я просматривал учебники по xpath и, по-видимому, есть оператор "кроме", а также "последний ()", но не могу заставить мой код работать.
Пока у меня есть это. Что мне добавить к этому шаблону, чтобы исключить последние две строки? Основная проблема заключается в том, что количество ТР варьируется.
result = doc.xpath("//tr")
Я думаю, я мог бы превратить это в список и просто удалить последние два элемента, но есть ли более простое / элегантное решение?
Заранее спасибо!
2 ответа
Используйте:
expressionSelectingTheTable/tr[not(position() > last() -2)]
где expressionSelectingTheTable
следует заменить конкретным выражением XPath, которое выбирает таблицу, для которой задается вопрос (например, //table[@id='foo']
)
Это единственное выражение XPath выбирает все tr
дети table
родитель, чья позиция не является одной из двух последних.