Как сделать нечувствительным к регистру совпадения строк [text () = "sTrInG"] в python (lxml)? - PullRequest
0 голосов
/ 03 июля 2011

У меня есть этот шаблон xpath:

tags = doc.xpath('/html/body//a[text() = "' + name.encode('utf8') + '"]/@href'

Возвращает URL каждого тега с именем name в виде текста. Возможно ли получить регистронезависимое совпадение name?

Редактировать

При попытке решения @Shelhamer я получаю:

>>> a_tag_list = html_string.xpath('/html/body//a[lower-case(text()) = "' + author_name.lower() + '"]/@href')
  File "lxml.etree.pyx", line 1459, in lxml.etree._Element.xpath (src/lxml/lxml.etree.c:40530)
  File "xpath.pxi", line 324, in lxml.etree.XPathElementEvaluator.__call__ (src/lxml/lxml.etree.c:113864)
  File "xpath.pxi", line 242, in lxml.etree._XPathEvaluatorBase._handle_result (src/lxml/lxml.etree.c:113063)
  File "xpath.pxi", line 227, in lxml.etree._XPathEvaluatorBase._raise_eval_error (src/lxml/lxml.etree.c:112894)
lxml.etree.XPathEvalError: Unregistered function

Ответы [ 2 ]

3 голосов
/ 03 июля 2011

Это можно сделать с помощью функции нижнего регистра:

tags = doc.xpath('/html/body//a[lower-case(text()) = "' + name.encode('utf8') + '"]/@href'

Здесь приведен полезный список функций: http://www.w3schools.com/xpath/xpath_functions.asp

0 голосов
...