python 文字列からhtmlタグを除去する

python 文字列からhtmlタグを除去する

pythonで、文字列からhtmlタグを除去するサンプルコードを記述してます。pythonのバージョンは3.10.0を使用してます。

環境

  • OS windows11 home 64bit
  • python 3.10.0

文字列からhtmlタグを除去

文字列からhtmlタグを除去するには、「正規表現」を使用します。

str1 = "<p>hello</p>"
str2 = "<div><b>world</b></div>"

print(re.sub(re.compile('<.*?>'), '', str1))
# hello

print(re.sub(re.compile('<.*?>'), '', str2))
# world

「BeautifulSoup」を使用することも可能です。使用するには「pip」でインストールを行います。

pip install beautifulsoup4

pip install lxml

実際に実行します。

from bs4 import BeautifulSoup

str1 = "<p>hello</p>"
str2 = "<div><b>world</b></div>"

print(BeautifulSoup(str1, "lxml").text)
# hello

print(BeautifulSoup(str2, "lxml").text)
# world

パフォーマンスは「正規表現」の方が良さそうです。
※それぞれ同じ条件で10万回実行した結果

正規表現 : 1503.2 ms
BeautifulSoup : 154576.6 ms

注意点

どちらも、文字列中に「<」か「>」が含まれていると、タグと認識され除去されます。

from bs4 import BeautifulSoup

str3 = "<div><b>w>o<rld</b></div>"

print(re.sub(re.compile('<.*?>'), '', str3))
# w>o

print(BeautifulSoup(str3, "lxml").text)
# w>o