gpt4 book ai didi

Python删除源中的某些元素

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:06 25 4
gpt4 key购买 nike

我有一些来源,我试图删除一些标签,我知道不建议使用正则表达式删除标签,但我认为这是最简单的方法。

我需要做的是删除所有 imga 标签以及 a 标签的内容 p 标签内,但我不确定如何使用正则表达式来做到这一点。

比如遇到的时候:

<p><img src="center.jpg"><a href="?center">center</a>TEXT<img src="right.jpg"><a href="?rightspan">right</a> MORE TEXT<img src="another.jpg"></p>

输出应如下所示,其中删除了所有 a 标签和内容以及 img 标签。

<p>TEXT MORE TEXT</p>

问题就像我说的那样,我不确定该怎么做,我的正则表达式删除了所有 aimg 源代码中的标签,而不仅仅是 p 标签内的标签。

re.sub(r'<(img|a).*?>|</a>', '', text)

最佳答案

您的正则表达式确实会在不使用某种类型的断言的情况下删除所有标签。尽管您可以使用正则表达式来执行此操作,但出于多种原因,我建议不要采用这种方式。

您可以简单地使用 BeautifulSoup 传递要删除的内容的列表。

>>> from BeautifulSoup import BeautifulSoup
>>> html = '<p><img src="center.jpg"><a href="?center">center</a>TEXT<img src="right.jpg"><a href="?rightspan">right</a> MORE TEXT<img src="another.jpg"></p>'
>>> soup = BeautifulSoup(html)
>>> for m in soup.findAll(['a', 'img']):
... if m.parent.name == 'p':
... m.replaceWith('')

>>> print soup

<p>TEXT MORE TEXT</p>

Note: This will replace all <a>, </a> and <img> elements (including content) that are inside of a <p> element leaving the rest untouched. If you have BS4, use find_all() and replace_with()

关于Python删除源中的某些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20843434/

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