Python 美丽的汤-在原始文本中查找已识别的标记

Python 美丽的汤-在原始文本中查找已识别的标记,python,beautifulsoup,Python,Beautifulsoup,在识别了原始文档中的文本后,我需要处理HTML文档中的某些文本。假设我有这个HTML代码 <div id="identifier"> <a href="link" id="linkid"> </a> </div> 我想删除标记中的id属性。我可以使用BeautifulSoup识别特定的标记,但由于它更改了原始文档的格式,我也无法搜索/替换字符串。我不想只写BeautifulSoup的输出,而是想在原始文档中识别标记,并用替换。

在识别了原始文档中的文本后,我需要处理HTML文档中的某些文本。假设我有这个HTML代码

<div id="identifier">
    <a href="link" id="linkid">
    </a>
</div>

我想删除
标记中的
id
属性。我可以使用BeautifulSoup识别特定的标记,但由于它更改了原始文档的格式,我也无法搜索/替换字符串。我不想只写BeautifulSoup的输出,而是想在原始文档中识别
标记,并用
替换。你知道怎么做吗

回答提出的几个问题:

  • 这是一个庞大的现有代码库,需要一些更新,因此它不仅仅是一个单一的搜索/替换类型的工作

  • 原始格式很重要,因为组织在格式化代码时遵循特定的编码标准,我希望保留这些标准。此外,为了完整性起见,BS引入了额外的标记,如for等


  • 您使用的是哪个版本的beautifulsoup? 您可以像在bs4中编辑字典一样编辑html节点

    从文件:

    soup=BeautifulSoup('非常粗体')
    标签=汤
    del标记['class']
    del标记['id']
    
    另外,您似乎对Beauty soup输出修改后的html代码的方式有问题。 如果您想漂亮地打印文档,或者使用自定义格式,您可以很容易地做到这一点


    您能更详细地解释一下为什么不能搜索/替换字符串吗?我使用的是BS4。我可以像您提到的那样删除标记,但我想替换原始文档中的新标记。因此,在本例中,我将得到“极度粗体”,但如果原始文本被写为“\n\n极度粗体\n\n”,它将丢失所有换行符和制表符。我希望我澄清一下以理解这个问题。为什么保持它们很重要?换行符和空格在HTML中没有任何意义。您是否需要它们以使您的文档保持可读性?另外,正如ASGM所问的,为什么只搜索/替换字符串而不进行美化是不合适的呢?这不仅是人类可读的,而且重要的是要遵循页面的格式化准则,因此不合适。另外,我不想在所有标签上都这样做,只想在标签的子集上这样做,并且必须在许多文件中这样做。
    soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
    tag = soup.b
    
    del tag['class']
    del tag['id']