Как выбрать все tr, кроме последних двух tr - PullRequest
3 голосов
/ 11 февраля 2011

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

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

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

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

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

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

Ответы [ 2 ]

9 голосов
/ 11 февраля 2011

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

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

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

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

2 голосов
/ 11 февраля 2011
result = doc.xpath("//tr")[0:-2]

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

...