You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XPath去除文本换行与空格并提取全部节点文本?

提取所有

节点去空格文本的解决方案

你遇到的问题是因为直接对所有

节点的文本集合调用normalize-space(),导致合并成了单个结果。要获取每个

节点的无多余空格文本,需要对每个

节点单独应用该方法,以下是具体实现方式:

1. 直接用XPath表达式批量处理

使用XPath的节点级调用语法,遍历所有

节点并逐个处理:

//p/normalize-space()

这个表达式会返回一个文本列表,每个元素对应一个

节点处理后的内容——自动去除开头/结尾的空格、换行、 ,并将中间连续空白替换为单个空格。

2. 代码层面逐个处理(以Python lxml为例)

如果通过代码实现,先获取所有

节点,再对每个节点单独执行文本归一化:

from lxml import etree

# 示例HTML(替换为你的实际页面内容)
html_content = """
<html>
<head></head>
<body>
   <p>&nbsp;&nbsp;5-8&nbsp;&nbsp;</p>
   <p></br>5-8</br></p>
   <p>&nbsp;</br>5-8&nbsp</br></p>
</body>
</html>
"""

tree = etree.HTML(html_content)
# 获取所有<p>节点
p_elements = tree.xpath('//p')
# 逐个节点应用normalize-space()
cleaned_texts = [etree.XPath('normalize-space()')(elem) for elem in p_elements]

# 输出结果:['5-8', '5-8', '5-8']
print(cleaned_texts)

核心要点

normalize-space()的作用是处理单个节点内的文本,只要确保是对每个独立的

节点调用该方法,就能得到所有节点对应的去空格文本,而不会合并成单个结果。

内容的提问来源于stack exchange,提问作者Abafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:12:29