gpt4 book ai didi

python - Findall 等效于 xpath , Lxml

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:36 27 4
gpt4 key购买 nike

我正在提取关于标签的文本,我需要将它们以列表形式 w.r.t p 标签获取。我有这个 xpath 表达式:

 find =  etree.XPath("//w:p//.//*[local-name() = 'ins']//text()" ,namespaces={'w':"http://schemas.openxmlformats.org/wordprocessingml/2006/main"}) 

我想在 findall 表达式中使用它。我试过:

inserted_list_1=[]
for p in lxml_tree.findall('.//{' + w + '}p'):
inserted_list_1.append([t.text for t in p.findall('.//{' + w + '}ins')])

但所有这些返回的是一个充满None 值的列表,而前一个 xpath 工作得很好。
我认为缺少一些中间路径。

最佳答案

您不能将该表达式与 findall() 一起使用; findall() 方法故意保持与 limited ElementTree API XPath support 的兼容性.

使用 xpath() method相反:

for p in lxml_tree.xpath('.//w:p', namespaces={'w': w}):

并且只使用命名空间前缀来进行更具可读性的查询。

如果你只想提取所有包含的文本,你可以使用:

[t for t in p.xpath('../w:p//w:ins//text()',namespaces={'w': w})]

关于python - Findall 等效于 xpath , Lxml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26139280/

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