当前位置: 首页 > 面试题库 >

从Python字符串中删除不在允许列表中的HTML标签

松景铄
2023-03-14
问题内容

我有一个包含文本和HTML的字符串。我想删除或以其他方式禁用某些HTML标记,例如<script>,同时允许其他HTML标记,以便我可以安全地将其呈现在网页上。我有一个允许标签的列表,如何处理字符串以删除任何其他标签?


问题答案:

这是一个使用BeautifulSoup的简单解决方案:

from bs4 import BeautifulSoup

VALID_TAGS = ['strong', 'em', 'p', 'ul', 'li', 'br']

def sanitize_html(value):

    soup = BeautifulSoup(value)

    for tag in soup.findAll(True):
        if tag.name not in VALID_TAGS:
            tag.hidden = True

    return soup.renderContents()

如果您也要删除无效标签的内容,请替换tag.extract()tag.hidden

您可能还会考虑使用lxml和Tidy。



 类似资料:
  • 问题内容: 是否有从Java字符串中删除HTML的好方法?一个简单的正则表达式 会起作用,但是不会正确转换,并且两个尖括号之间的非HTML也会被删除(即,正则表达式中的将会消失)。 问题答案: 使用HTML解析器代替正则表达式。对于Jsoup来说,这简直太简单了。 Jsoup还支持对可定制的白名单,如果你希望只允许例如这是非常有用的去除HTML标签,和。

  • 问题内容: 我想从python中的字符串列表中删除所有空字符串。 我的想法如下: 有没有更多的Python方式可以做到这一点? 问题答案: 我会用: Python 3从返回一个迭代器,因此应包装在对的调用中

  • 问题内容: 是否有从Java字符串中删除HTML的好方法?一个简单的正则表达式 会起作用,但是;不会正确转换,并且两个尖括号之间的非HTML也会被删除(即.,正则表达式中的将会消失)。 问题答案: 如果你是为Android编写的,则可以这样做…

  • 问题内容: 我有一个清单 我正在尝试删除其超字符串已经在列表中的字符串。在这种情况下,结果应为: 我已经写了代码: 但它似乎不起作用。我读过,我们无法在列表上进行迭代时将其删除。因此,副本,而这是我的原始列表。 问题答案: l=[‘abc’,’abcdef’,’def’,’defdef’,’polopolo’] print [j for i, j in enumerate(l) if all(j

  • 本文向大家介绍如何从Python的字符串列表中删除空字符串?,包括了如何从Python的字符串列表中删除空字符串?的使用技巧和注意事项,需要的朋友参考一下 您可以使用过滤器过滤掉空字符串。filter的第一个参数是lambda,它将告诉您字符串是否为空。您可以将此lambda传递为None,bool,len或检查字符串是否为空的函数。您可以通过以下几种方式进行检查: 请单击下面的链接以查看带有简单

  • 问题内容: 使用ASP.NET,如何可靠地剥离给定字符串中的HTML标签(即不使用正则表达式)?我正在寻找类似PHP的东西。 例: 输出: “你好” 我尝试不重新发明轮子,但是到目前为止,我还没有找到任何满足我需求的东西。 问题答案: 如果只是从字符串中剥离 所有 HTML标记,则这也可以与regex 可靠地 一起工作。更换: 与空字符串,全局。不要忘了之后将字符串标准化,替换为: 与单个空格,并