Pythonと正規表現でテキストのフィルタリングとクリーニングを行う方法

Pythonを使用してテキストデータを効率よくフィルタリングとクリーニングする方法について解説します。具体的なコード例とその解説、応用例を含めています。正規表現(Regular Expression)はテキスト検索や変更をする際に非常に便利なツールです。この記事を読むことで、正規表現を活用してデータをより効率的に処理する方法をマスターできるでしょう。

目次

正規表現の基本

Pythonで正規表現を使うには、`re`という標準ライブラリを使用します。基本的な使い方としては、パターンをコンパイルし、その後でマッチングや置換などの操作を行います。

import re  # reモジュールをインポート

pattern = re.compile(r'\d+')  # \d+は1つ以上の数字にマッチするパターン
result = pattern.findall('12abc34def')  # '12abc34def'から数字を探す

print(result)  # ['12', '34']が出力される

主なメソッド

`re`モジュールには以下のような主なメソッドがあります。

  • findall: マッチするすべての部分文字列をリストで返す
  • search: 文字列全体に対してマッチするか調べる
  • match: 文字列の先頭がマッチするか調べる
  • sub: マッチした部分文字列を置換する

テキストのフィルタリング

特定のテキストパターンを探し出す際には、`findall`または`search`メソッドを使います。

# 「findall」メソッドの例
email_pattern = re.compile(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b')
result = email_pattern.findall('My email is example@gmail.com, not example2@gmail.com')

print(result)  # ['example@gmail.com', 'example2@gmail.com']

応用例1:HTMLタグの除去

以下のようにHTMLタグを含むテキストからタグを除去できます。

# HTMLタグを取り除く正規表現
html_pattern = re.compile(r'<.*?>')
# サンプルテキスト
sample_text = "

Title

This is a paragraph.

" # HTMLタグを取り除く clean_text = html_pattern.sub('', sample_text) print(clean_text) # "TitleThis is a paragraph."

テキストのクリーニング

テキストのクリーニングには、多くの場合`sub`メソッドが用いられます。これは、マッチした部分文字列を置換する機能を持っています。

# スペースまたはタブで始まる行を取り除く
cleaning_pattern = re.compile(r'^[\s\t]+', re.MULTILINE)
text = """    This is line 1.
	This is line 2.
This is line 3."""

clean_text = cleaning_pattern.sub('', text)
print(clean_text)

応用例2:URLの置換

テキスト内のURLを特定の文字列に置換する例です。

# URLを特定する正規表現
url_pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')

# サンプルテキスト
sample_text = "Visit https://www.example.com or http://www.test.com."

# URLを"[URL]"という文字列に置換する
clean_text = url_pattern.sub('[URL]', sample_text)
print(clean_text)  # "Visit [URL] or [URL]."

まとめ

正規表現はPythonでテキストデータを効率的にフィルタリングとクリーニングする際の強力なツールです。本記事で説明した基本的なメソッドや応用例を活用して、より賢いテキスト処理を行ってみてください。

コメント

コメントする

目次