python - 停止 pyquery 在源 HTML 中没有空格的地方插入空格?

标签 python lxml pyquery

我正在尝试使用 pyquery 1.2 从元素中获取一些文本。显示的文本中没有空格,但 pyquery 正在插入空格。

这是我的代码:

from pyquery import PyQuery as pq
html = '<h1><span class="highlight" style="background-color:">Randomized</span> and <span class="highlight" style="background-color:">non-randomized</span> <span class="highlight" style="background-color:">patients</span> in <span class="highlight" style="background-color:">clinical</span> <span class="highlight" style="background-color:">trials</span>: <span class="highlight" style="background-color:">experiences</span> with <span class="highlight" style="background-color:">comprehensive</span> <span class="highlight" style="background-color:">cohort</span> <span class="highlight" style="background-color:">studies</span>.</h1>'
doc = pq(html)
print doc('h1').text()

这会产生(注意冒号和句点之前的空格):

Randomized and non-randomized patients in clinical trials : 
experiences with comprehensive cohort studies .

如何阻止 pyquery 在文本中插入空格?

最佳答案

阅读 PyQuerysource 后我发现text()方法返回以下内容:

return ' '.join([t.strip() for t in text if t.strip()])

这意味着非空标签的内容将始终由单个空格分隔。我想问题是 html 的文本表示没有明确定义,所以我不认为它可以被视为一个错误 - 特别是因为 text() 文档中的示例正是这样做的:

>>> doc = PyQuery('<div><span>toto</span><span>tata</span></div>')
>>> print(doc.text())
toto tata

如果您想要其他行为,请尝试实现您自己的 text() 版本。您可以使用原始版本来获取灵感,因为它只有 10 行左右。

关于python - 停止 pyquery 在源 HTML 中没有空格的地方插入空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29602929/

相关文章:

python - 在 matplotlib 图中交互式选择系列

python - 使用弯曲(路径跟踪)向量在 python 中进行流可视化

python - 通过 Pip 安装 PyQuery

python - PyQuery 如何将一个元素追加和重命名到它的每个子元素中

python - 使用lxml html从嵌套元素中提取特定元素

python - pip 错误 : unrecognized command line option ‘-fstack-protector-strong’

python - PyTorch 张量的零对角线?

python - 操作系统错误 : raw write() returned invalid length when using print() in python

python - 如何使用 lxml Python(来自 .XML 文件)有效解析特定行?

python - 使用带有 requests 和 lxml 的 xpath 进行抓取,但遇到问题