Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの正規表現を使ってテキストからメールアドレスを抽出する方法

本記事では、Pythonの正規表現パッケージ(reモジュール)を使用して、テキストファイルやURLテキストからメールアドレス(email-id)を抽出する方法を解説します。

手順はシンプルです。まず正規表現でメールアドレスのパターンを定義し、次にfindall()関数を使ってテキスト内からパターンに一致するすべての文字列を取得します。この手法は、問い合わせフォームのデータ処理やログ解析など、さまざまな場面で活用できます。

入力と出力のイメージ

入力:
text = "Please contact us at contact@tutorialspoint.com for further information." +
       " You can also give feedback at feedback@tutorialspoint.com"

出力:
['contact@tutorialspoint.com', 'feedback@tutorialspoint.com']

サンプルコード

以下のコードでは、[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+ という正規表現パターンを定義しています。これは「ローカル部@ドメイン名.トップレベルドメイン」という一般的なメールアドレスの形式に一致するパターンです。

import re

my_text = "Please contact us at contact@tutorialspoint.com for further information." +\
   " You can also give feedback at feedback@tutorialspoint.com"

my_emails = re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", my_text)
print(my_emails)

実行結果

['contact@tutorialspoint.com', 'feedback@tutorialspoint.com']

コードのポイント

  • re.findall(): テキスト全体を走査し、パターンに一致したすべての文字列をリストとして返します。
  • raw文字列(r"..."): バックスラッシュのエスケープ処理を防ぐため、正規表現には raw 文字列を使用するのが推奨されます。
  • 大文字への対応: 現在のパターンは小文字のみに対応しているため、大文字を含むメールアドレスにも対応したい場合は [a-zA-Z0-9] のように拡張するか、re.IGNORECASE フラグを指定するとよいでしょう。

このように、正規表現とfindall()関数を組み合わせることで、わずか数行のコードでテキストからメールアドレスを効率的に抽出できます。ぜひ実際のプロジェクトでも活用してみてください。

  1. PythonでWebからファイルをダウンロードする方法|requestsライブラリの使い方を徹底解説

    Pythonには、urllibやrequestsなど、Webからファイルをダウンロードするためのさまざまなモジュールが用意されています。本記事では、その中でも定番のrequestsライブラリを使用して、URLから効率的にファイルをダウンロードする方法を、ステップごとにわかりやすく解説します。 requestsライブラリでファイルをダウンロードする基本手順 1. モジュールをインポートする import requests 2. ダウンロード対象のURLを指定する url = https://www.facebook.com/favicon.ico r = requests.get(url, al

  2. 【Python】OpenCVで動画からフレームを抽出して画像として保存する方法

    OpenCVとは? OpenCV(Open Source Computer Vision Library)は、機械学習とコンピュータビジョン向けに開発されたオープンソースのプログラミングライブラリです。コンピュータビジョンアプリケーションの開発や、商用製品への機械学習機能の迅速な組み込みを支援する共通基盤を提供しています。 OpenCVには2,500を超える最適化済みアルゴリズムが収録されており、古典的な手法から最先端の手法まで幅広くカバーしています。これらを活用することで、顔検出・顔認識、物体の識別、動画内の人間の動作の分類、カメラの動きのトラッキング、複数枚の画像をつなぎ合わせた高解像度