Python の文字列から HTML タグを削除する

Fariba Laiq 2023年10月10日
  1. 正規表現を使用して Python の文字列から HTML タグを削除する
  2. Python で BeautifulSoup を使用して文字列から HTML タグを削除する
  3. Python で xml.etree.ElementTree を使用して文字列から HTML タグを削除する
Python の文字列から HTML タグを削除する

このガイドでは、文字列から HTML タグを削除するためのいくつかの方法を学び、適用します。正規表現、BeautifulSoup、および XML 要素ツリーを使用します。

正規表現を使用して Python の文字列から HTML タグを削除する

HTML タグには常に記号 <> が含まれているため。組み込みの re モジュール(正規表現)をインポートし、compile() メソッドを使用して、入力文字列で定義されたパターンを検索します。

ここで、パターン <.*?> は、タグ <> 内の 0 個以上の文字を意味し、可能な限り一致しません。

sub() メソッドは、出現する文字列を別の文字列に置き換えるために使用されます。ここでは、見つかったオカレンスを空の文字列に置き換えます。

サンプルコード:

# Python 3.x
import re

string = "<h1>Delftstack</h1>"
print("String before cleaning:", string)
to_clean = re.compile("<.*?>")
cleantext = re.sub(to_clean, "", string)
print("String after cleaning:", cleantext)

出力:

#Python 3.x
String before cleaning: <h1>Delftstack</h1>
String after cleaning: Delftstack

Python で BeautifulSoup を使用して文字列から HTML タグを削除する

BeautifulSoup は、HTML および XML からデータを取得するための Python ライブラリです。パーサーを使用して HTML と XML を解析します。推奨されるのは lxml です。

次のコマンドを使用して、続行する前に両方をインストールする必要があります。

#Python 3.x
pip install beautifulsoup4
#Python 3.x
pip install lxml

BeautifulSoup モジュールをインポートし、次のコードで指定された HTML 文字列を解析しました。text 属性を使用して HTML からテキストにアクセスしました。

サンプルコード:

# Python 3.x
from bs4 import BeautifulSoup

string = "<h1>Delftstack</h1>"
print("String after cleaning:", string)
cleantext = BeautifulSoup(string, "lxml").text
print("String after cleaning:", cleantext)

出力:

#Python 3.x
String after cleaning: <h1>Delftstack</h1>
String after cleaning: Delftstack

Python で xml.etree.ElementTree を使用して文字列から HTML タグを削除する

ElementTree は、XML を解析してナビゲートするライブラリです。fromstring() メソッドは、XML を文字列から解析ツリーのルート要素である要素に直接解析します。

itertext() は、この要素とそのすべてのサブ要素をドキュメント順にループし、すべての内部テキストを返すテキストイテレータを生成します。join() メソッドは、文字列区切り文字で区切られた反復可能(入力文字列)のすべてのコンポーネント(内部テキスト)をマージすることにより、HTML タグのない文字列を返します。

サンプルコード:

# Python 3.x
import xml.etree.ElementTree as ET

string = "<h1>Delftstack</h1>"
print("String before cleaning:", string)
tree = ET.fromstring(string)
print("String after cleaning:", "".join(tree.itertext()))

出力:

#Python 3.x
String before cleaning: <h1>Delftstack</h1>
String after cleaning: Delftstack
著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Python String