程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python知識:去除html中的標簽類符號

編輯:Python

        有時,當我們嘗試在數據庫中存儲字符串時,它會與 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 中正則表達式的更多信息。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved