如何删除 BeautifulSoup 中的空格

新手上路,请多包涵

我有一堆 HTML 正在使用 BeautifulSoup 进行解析,除了一个小问题外,一切都很好。我想将输出保存到单行字符串中,以下是我当前的输出:

     <li><span class="plaincharacterwrap break">
                    Zazzafooky but one two three!
                </span></li>
<li><span class="plaincharacterwrap break">
                    Zazzafooky2
                </span></li>
<li><span class="plaincharacterwrap break">
                    Zazzafooky3
                </span></li>

理想情况下我想要

<li><span class="plaincharacterwrap break">Zazzafooky but one two three!</span></li><li><span class="plaincharacterwrap break">Zazzafooky2</span></li>

有很多多余的空格我想去掉,但不一定可以使用 strip() 删除,我也不能公然删除所有空格,因为我需要保留文本。我该怎么做?这似乎是一个足够普遍的问题,正则表达式会矫枉过正,但这是唯一的方法吗?

我没有任何 <pre> 标签,所以我可以在那里更有力一点。

再次感谢!

原文由 Rio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 788
2 个回答

这是没有正则表达式的方法:

 >>> html = """    <li><span class="plaincharacterwrap break">
...                     Zazzafooky but one two three!
...                 </span></li>
... <li><span class="plaincharacterwrap break">
...                     Zazzafooky2
...                 </span></li>
... <li><span class="plaincharacterwrap break">
...                     Zazzafooky3
...                 </span></li>
... """
>>> html = "".join(line.strip() for line in html.split("\n"))
>>> html
'<li><span class="plaincharacterwrap break">Zazzafooky but one two three!</span></li><li><span class="plaincharacterwrap break">Zazzafooky2</span></li><li><span class="plaincharacterwrap break">Zazzafooky3</span></li>'

原文由 Andrew Clark 发布,翻译遵循 CC BY-SA 3.0 许可协议

老问题,我知道,但是 beautifulsoup4 有一个名为 stripped_strings 的助手。

尝试这个:

 description_el = about.find('p', { "class": "description" })
descriptions = list(description_el.stripped_strings)
description = "\n\n".join(descriptions) if descriptions else ""

原文由 twig 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题