gpt4 book ai didi

python - 如何使用 lxml 进行不区分大小写的 Python XPath 搜索?

转载 作者:太空狗 更新时间:2023-10-30 00:46:09 25 4
gpt4 key购买 nike

我正在尝试使用 XPath 中的 lower-case 函数匹配国家或地区。 translate 有点乱,所以使用小写字母,我相信我的 Python 2.6.6 版本支持 XPath 2.0,因为小写字母仅在 XPath 2.0 中可用。

我正在寻找如何在我的案例中使用小写字母。希望这个例子是不言自明的。我正在寻找 ['USA', 'US'] 作为输出(如果小写评估 Country 和 country 相同,这两个国家可能会发生)。

HTML:doc.htm

<html>
<table>
<tr>
<td>
Name of the Country : <span> USA </span>
</td>
</tr>
<tr>
<td>
Name of the country : <span> UK </span>
</td>
</tr>
</table>

python :

import lxml.html as lh

doc = open('doc.htm', 'r')
out = lh.parse(doc)
doc.close()

print out.xpath('//table/tr/td[text()[contains(. , "Country")]]/span/text()')
# Prints : [' USA ']
print out.xpath('//table/tr/td[text()[contains(. , "country")]]/span/text()')
# Prints : [' UK ']

print out.xpath('//table/tr/td[lower-case(text())[contains(. , "country")]]/span/text()')
# Prints : [<Element td at 0x15db2710>]

更新:

out.xpath('//table/tr/td[text()[contains(translate(., "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz") , "country")]]/span/text()')

现在问题仍然存在,我能否将翻译部分存储为全局变量“handlecase”并在我执行 XPath 时打印该全局变量?

这样的东西可行:

handlecase = """translate(., "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")"""

out.xpath('//table/tr/td[text()[contains(%s , "country")]]/span/text()' % (handlecase))

但是为了简单和可读性,我想这样运行它:

out.xpath('//table/tr/td[text()[contains(handlecase , "country")]]/span/text()')

最佳答案

我相信最简单的方法就是编写一个 XPath 扩展函数。

通过这样做,您可以编写一个 lower-case() 函数,或者一个不区分大小写的搜索。


您可以在此处找到详细信息:http://lxml.de/extensions.html

关于python - 如何使用 lxml 进行不区分大小写的 Python XPath 搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com