有时,当我们尝试在数据库中存储字符串时,它会与 HTML 标记一起存储。但是,某些网站需要以原始格式呈现字符串,而不需要数据库中的任何 HTML 标记。因此,在本教程中,我们将学习如何在 Python 中从字符串中删除 HTML 标记的不同方法。

1 在 Python 中使用正则表达式从字符串中删除 HTML 标记

1.1 示例代码

正则表达式是表示搜索模式的字符组合。在python的正则表达式模块中,我们使用了sub()函数,它将与指定模式匹配的字符串替换为另一个字符串。下面提到了使用正则表达式从字符串中删除 HTML 字符串的代码。

import re
regex = re.compile(r'<[^>]+>')
def remove_html(string):
return regex.sub('', string)
text=input("Enter String:")
new_text=remove_html(text)
print(f"Text without html tags: {new_text}")

Output 1:


Enter String:<div class="header"> Welcome to my website </div> Text without html tags: Welcome to my website


Output 2:


Enter String:<h1> Hello </h1> Text without html tags: Hello


1.2 上面的代码是如何工作的?

  1. 最初,我们在名为“re”的python中导入正则表达式模块
  2. 然后我们使用 regex 模块的 re.compile() 函数。那里。 compile() 方法将从作为输入提供的正则表达式模式字符串创建一个正则表达式模式对象。此模式对象将使用正则表达式函数在不同的目标字符串中搜索匹配的字符串。函数的参数是要与输入字符串匹配的模式。 ‘<>’,匹配字符串中的开始和结束标记。
  3. ‘.*’ 表示零个或多于零个字符。正则表达式是一种贪婪的方法,它试图匹配尽可能多的重复。如果这不起作用,则整个过程将回溯。为了将贪婪转换为非贪婪方法,我们在正则表达式字符串中使用“?”字符。它基本上会尝试只匹配几次重复,然后如果它不起作用则回溯。
  4. 然后我们使用 re.sub() 函数将匹配的模式替换为空字符串。
  5. 最后,我们调用函数 remove_html 从输入字符串中删除 HTML 标签。

二、不使用内置函数从字符串中删除 HTML 标记


下面提到了在不使用内置函数的情况下从字符串中删除 HTML 字符串的代码。

def remove_html(string):
    tags = False
    quote = False
    output = ""
    for ch in string:
    if ch == '<' and not quote:
        tag = True
    elif ch == '>' and not quote:
       tag = False
    elif (ch == '"' or ch == "'") and tag:
        quote = not quote
    elif not tag:
        output = output + ch
    return output


text=input("Enter String:")
new_text=remove_html(text)
print(f"Text without html tags: {new_text}")

Output:


Enter String:<div class="header"> Welcome to my website </div> Text without html tags: Welcome to my website


上面的代码是如何工作的?
在上面的代码中,我们保留了两个计数器,称为 tag 和 quote。 tag 变量跟踪标签,而 quote 变量跟踪输入字符串中的单引号和双引号。我们使用 for 循环并遍历字符串的每个字符。如果字符是开始或结束标记,则 Tag 变量设置为 False。如果字符是单引号或双引号,则引号变量设置为 False。否则,该字符将附加到输出字符串。因此,在上述代码的输出中,删除了 div 标签,只留下了原始字符串。

三、使用 Python 中的 XML 模块从字符串中删除 HTML 标记

        下面提到了在不使用 XML 模块的情况下从字符串中删除 HTML 字符串的代码。 XML 是一种标记语言,用于存储和传输大量数据或信息。 Python 有一些内置模块可以帮助我们解析 XML 文档。XML 文档有单独的单元,称为元素,在开始和结束标记 (<>) 下定义。开始标签和结束标签之间的任何内容都是元素的内容。一个元素可以由多个称为子元素的子元素组成。使用 Python 中的 ElementTree 模块,我们可以轻松地操作这些 XML 文档。

import xml.etree.ElementTree

def remove_html(string):

return ''.join(xml.etree.ElementTree.fromstring(string).itertext())

text=input("Enter String:")

new_text=remove_html(text)

print(f"Text without html tags: {new_text}")

Output:


Enter String:<p class="intro"> I love Coding </p> Text without html tags: I love Coding


上面的代码是如何工作的?

        最初,我们在 Python 中导入 xml.etree.ElementTree 模块
我们使用 formstring() 方法将字符串转换或解析为 XML 元素。为了遍历 formstring() 函数返回的每个 XML 元素,我们使用了 itertext() 函数。它基本上会遍历每个 XML 元素并返回该元素内的内部文本。
        我们使用 join 函数将内部文本与空字符串连接起来,并返回最终的输出字符串。
最后,我们调用 remove_html 函数从输入字符串中删除 HTML 标签。
因此,关于如何在 Python 中从字符串中删除 HTML 标记的教程到此结束。您可以使用以下链接了解有关 Python 中正则表达式的更多信息。