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