【发布时间】:2023-04-02 04:52:02
【问题描述】:
我正在关注 lxml documentation on extension functions 并想在 XPath 2.0 中模仿 upper-case 函数。
import urllib
from lxml import html, etree
ns = etree.FunctionNamespace(None)
ns['upper-case'] = lambda context, s: str.upper(s)
google_page = urllib.request.urlopen('http://www.google.com').read().decode('latin-1')
google_page_tree = html.fromstring(google_page)
# text == ['Google.com']
text = google_page_tree.xpath('//a[@id="fehl"]/text()')
# TypeError: descriptor 'upper' requires a 'str' object but received a 'list'
text = google_page_tree.xpath('//a[upper-case(@id)="FEHL"]/text()')
这似乎不是正确的方法,因为我看到 upper-case 收到了一个空列表 []。有任何想法吗?谢谢。
【问题讨论】: