gpt4 book ai didi

python - ElementTree/TidyHTMLTreeBuilder 弄乱了我文本中的尾随空格

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:24 24 4
gpt4 key购买 nike

我正在开发一个用 Python 编写的应用程序,它接受来自浏览器托管的 HTML 编辑器的 HTML。应用程序将此 HTML 加载到 ElementTree 文档中,以便使用 TidyHTMLTreeBuilder 作为解析器进行处理。我发现的问题是 XML 文档认为适合重新组织节点,以便将节点(例如 SPAN)上的任何尾随空格添加到节点的尾部。除了将空格添加到更高级别的节点之外,这还不错。我正在进行的处理需要使用节点的 CSS 样式来识别文本部分,因此移动该空间会导致问题。

这是一个实际的例子:

发布的 HTML 摘录:

<td style="width: 4.7729in; padding-top: 0.0000in; padding-left: 0.0556in; padding-bottom: 0.0000in; padding-right: 0.0556in; border-width: 1px; border-color: #FDD87B; border-style: solid;">
<p style="padding-top: 0.0833in; padding-bottom: 0.0833in;">
<span style="font-family: Verdana,Geneva,Tahoma,sans-serif; font-size: 10.0pt;">
<span id="DM_57134" class="defn_meaning">
<span id="DM_57133" class="defn_meaning">
<span id="DM_57273" class="defn_meaning">Sally sells sea shells </span>
</span>
</span>
<a class="popup" href="ID_57274" target="_blank">
<span id="DM_57134_1" class="defn_meaning">
<span id="DM_57133_1" class="defn_meaning">
<span id="DM_57273_1" class="defn_meaning">by the sea shore</span>
</span>
</span>
</a>
</span>
</p>
</td>

树按如下方式加载:

[td  "\n" (
[p (
[span (
[span id="DM_57134"
(
[span id="DM_57133"
(
[span id="DM_57273" "Sally sells sea shells" ()]
)
]
) tail=" "
]
[a (
[span id="DM_57134_1"
(
[span id="DM_57133_1"
(
[span id="DM_57273_1" "by the sea shore" ()]
)
]
)
])
])
]) tail="\n"
]) tail="\n"])
tail="\n"]

如您所见,“Sally sells sea shells”结尾的尾随空格曾经属于 DM_57273 节点,但最终附加到 DM_57134 节点。

所以问题是:

  1. 为什么要这样做?
  2. 有什么方法可以防止以这种方式处理尾随空格?

最佳答案

我不知道为什么会发生这种情况,但 TidyHTMLTreeBuilder + ElementTree 的替代方案可能适合您 BeautifulSoup .例如:

>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup(<html>)
>>> soup.find(id='DM_57273')
<span id="DM_57273" class="defn_meaning">Sally sells sea shells </span>
>>> soup.find(id='DM_57273').string
u'Sally sells sea shells '

可以看出,对于与问题中相同的示例,尾随空格仍然是标记的一部分。

关于python - ElementTree/TidyHTMLTreeBuilder 弄乱了我文本中的尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8873356/

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