首页 > 解决方案 > 段落在用 Beautifulsoup 处理后合并

问题描述

我的任务是突出显示 html 文件中的一些单词。这工作正常,但不幸的是,在结果文件中,段落从某个点合并在一起(所以我有没有空行的纯文本),这看起来相当难看。

我不太明白这是什么原因,特别是因为这种现象不是发生在文件的开头,而是发生在中间的某个点(所以文件的第一部分很好,第二部分很丑)。代码如下:

import bs4
from bs4 import BeautifulSoup


with open(file_in, 'r', encoding='utf8') as f:
   source = f.read()
soup = BeautifulSoup(source, 'html.parser')
for tag in soup:
    if type(tag) is not bs4.element.Tag:
        continue
    if ll[1]<90:
        new_soup = BeautifulSoup(str(tag).replace(ll[0], '<span    style="background-color:yellow">'+ll[0]+'</span>'))
    else:
        new_soup = BeautifulSoup(str(tag).replace(ll[0], '<span style="background-color:red">'+ll[0]+'</span>'))
    tag.replace_with(new_soup)
with open(file_out, 'w', encoding='utf8') as f:
    f.write(str(soup))

所以,file_in 非常好,但是 file_out 从中间的某个点来看是丑陋的,因为完整的文本被合并为一个块。有人知道如何防止这种情况吗?

标签: pythonbeautifulsoup

解决方案


推荐阅读