Pythonでメールアドレスの検証を行う方法

この記事では、Pythonを用いてメールアドレスの検証を行う方法を詳しく解説します。正規表現を使用して形式が正しいメールアドレスかどうかを判断する手法と、その応用例について紹介します。

目次

正規表現とは

正規表現(Regular Expression)は、文字列のパターンを定義するための強力な言語です。Pythonでは`re`という標準ライブラリを用いて正規表現が使えます。

基本的なメールアドレスの形式

メールアドレスは通常、`ユーザー名@ドメイン名`という形式で構成されます。例えば、`example@example.com`は、`example`がユーザー名で、`example.com`がドメイン名です。

メールアドレスの検証を行うコード

以下は、Pythonの`re`ライブラリを使用して、メールアドレスの検証を行うサンプルコードです。

import re  # 正規表現を使用するためのライブラリをインポート

def validate_email(email):
    # 正規表現でメールアドレスの形式を確認
    pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
    if re.fullmatch(pattern, email):
        return True
    else:
        return False

# テスト
print(validate_email("example@example.com"))  # Trueが出力される
print(validate_email("example.com"))  # Falseが出力される

コードの解説

1. `import re`で正規表現を使うための`re`ライブラリをインポートしています。
2. `validate_email`という関数を定義しています。引数`email`は検証したいメールアドレスです。
3. `re.fullmatch(pattern, email)`で、正規表現`pattern`が`email`と完全に一致するか確認しています。一致すれば`True`、しなければ`False`を返します。

応用例

1. CSVファイルからメールアドレスを検証

複数のメールアドレスが記録されたCSVファイルがあり、それらが正しい形式か確認する例です。

import csv  # CSVファイルを操作するためのライブラリをインポート

def validate_emails_from_csv(file_path):
    valid_emails = []
    with open(file_path, mode="r") as f:
        csv_reader = csv.reader(f)
        for row in csv_reader:
            email = row[0]
            if validate_email(email):
                valid_emails.append(email)
    return valid_emails

# CSVファイルのパスを指定
file_path = "emails.csv"

# 検証されたメールアドレスを出力
print(validate_emails_from_csv(file_path))

2. ドメインによるフィルタリング

特定のドメインのメールアドレスだけを許可する例です。

def validate_email_by_domain(email, domain):
    if validate_email(email) and email.endswith(f"@{domain}"):
        return True
    else:
        return False

# テスト
print(validate_email_by_domain("example@example.com", "example.com"))  # Trueが出力される
print(validate_email_by_domain("example@gmail.com", "example.com"))  # Falseが出力される

まとめ

Pythonの`re`ライブラリを用いたメールアドレスの検証方法について詳しく解説しました。具体的なコードとその解説、応用例を含めています。この知識を基に、更なるデータ検証の自動化などに挑戦してみてください。

コメント

コメントする

目次