首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xpath text()函数的用法

问Xpath text()函数的用法
EN

Stack Overflow用户
提问于 2013-07-04 13:02:25
回答 2查看 1.2K关注 0票数 1

我有一些html文件,其中包含以下内容:

代码语言:javascript
复制
<div>Chapter 1. <span>Contents of chapter N1.</span> </div>
<div>Chapter 2. <span>Contents of chapter N2.</span> </div>

我试图提取这些标记中包含的文本,并使用xpath '// text ()‘函数:

代码语言:javascript
复制
parser = etree.HTMLParser()
tree = etree.parse(StringIO(html),parser)
text = list(set( tree.xpath('//text()') ))
text = " ".join(text)

它很好,只是我想改变提取的顺序。现在,我得到了以下结果:

N1章的内容。N2章的内容。第二章,第一章。

但我想得到的结果是:

第一章第一章的内容第二章第二章的内容。

除了递归处理从文档顶部到底部的每个标记之外,还有其他更好的方法来完成这个任务吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-04 14:34:02

你确定string(/)不会给你你想要的答案吗?这与您所拥有的不太一样,在文档<p><i>Hello</i>!</p>中,它将为您提供"Hello!"而不是"Hello !",但在大多数情况下,我认为这是您想要的。

票数 1
EN

Stack Overflow用户

发布于 2013-07-04 13:51:05

似乎您正在尝试使用set来删除重复项。

在python中,set中的元素是无序的,这意味着从集合中获取元素的顺序依赖于实现,因此如果要保留顺序,就不能使用这种删除重复元素的方法。

代码语言:javascript
复制
text = " ".join(tree.xpath("//text()"))

在没有重复的情况下会产生预期的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17471026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档