📘
メールアドレスのリストのクリーニングに使えるコード
メール配信で使うメールアドレスのリストを、クリーニングする仕事の依頼を受けました。
それで、簡易のクリーニングができるプログラムを作ってみました。
尚私が自分で使うために作ったので、エラー処理、ファイル選択のキャンセル処理などは、ありません。
各自必要に応じて、作成してください。
クリーニング内容
- 重複しているメールアドレス
- タイプミスのようなドメイン名
- 特定のメールアドレスの@の前の部分
Pythonの仮想環境で使います
Pythonの仮想環境で、使います。
下記のrequirements.txtの内容で、仮想環境にインストールするものは再構築できます。
私は、WLSの環境で、Ubuntu22.04を使って作りました。
contourpy==1.2.0
cycler==0.12.1
et-xmlfile==1.1.0
fonttools==4.50.0
kiwisolver==1.4.5
matplotlib==3.8.3
numpy==1.26.4
openpyxl==3.1.2
packaging==24.0
pandas==2.2.1
pillow==10.2.0
pyparsing==3.1.2
python-dateutil==2.9.0.post0
pytz==2024.1
six==1.16.0
tzdata==2024.1
プログラムの本体
import pandas as pd
import re
import tkinter as tk
from tkinter import filedialog, font
import os
# GUIウィンドウの初期化
# 文字エンコーディングを指定
root = tk.Tk()
root.withdraw() # 小さなウィンドウを表示しないようにする
# デフォルトフォントの設定
default_font = font.nametofont("TkDefaultFont")
default_font.config(family="IPA Pゴシック") # ここで好きな日本語フォントに設定
# ファイル選択ダイアログの表示
file_path = filedialog.askopenfilename(
title='Excel Flie',
filetypes=[('Excelファイル', '*.xlsx'), ('すべてのファイル', '*.*')]
)
# Excelファイルを読み込む
df = pd.DataFrame() # 空のDataFrameを初期化
# ファイルが選択されたらExcelファイルを読み込む
if file_path:
df = pd.read_excel(file_path)
print(df)
# GUIを実行
#root.mainloop()
# 'Email'列にあるメールアドレスの重複を削除する
df = df.drop_duplicates(subset='Email')
# スパムトラップと思われるドメインパターンを定義する
# これは非常に基本的なものです。より複雑なパターンには、正規表現を調整する必要があります。
invalid_domains = [
r'@\w*gma[ij]l\.com',
r'@gma[ij]l\.com',
r'@\w*google\.com',
r'@yah?o\.co\.jp',
r'@i\.softbank\.jp',
r'@icloud\.com',
# 他の不正なドメインも同様に追加していく
]
# 不正なドメインを含むメールアドレスを削除する
for domain in invalid_domains:
df = df[~df['Email'].str.contains(domain, flags=re.IGNORECASE, regex=True)]
# 'info@'や'support@'で始まるメールアドレスを削除する
df = df[~df['Email'].str.startswith(('info@', 'support@','mail@','no-reply@'))]
# 入力ファイルのディレクトリを取得
input_dir = os.path.dirname(file_path)
# 出力ファイル名を設定
output_file = f'cleaned_{os.path.basename(file_path)}'
# クリーニングしたデータを新しいExcelファイルに保存する
df.to_excel(os.path.join(input_dir, output_file), index=False)
# 保存完了メッセージを表示
print('出力ファイル ' + output_file + ' を保存しました。')
仮想環境の再構築
下記のコードを実行してください。
#仮想環境を作る myenvは適宜書き換えてください。
python -m venv myenv
#仮想環境のアクティベート(有効化)
.\myenv\Scripts\activate
#インストールされているモジュールのインストール
#上記の内容を予め保存して、ファイルを作ってください。
pip install -r requirements.txt
#上記のプログラムのコードを任意のファイル名で、保存してください。
使い方
Excelのファイルを使います。
見出しは、Emailになっています。
ここは、適宜使われるリストに合わせて、プログラムのコードを書き替えて合わせてください。
Excelのファイルを選択できるダイアログが、表示されます。
ファイルを選択すると、コンソールに読み取ったリストの内容が前後の一部表示されます。
クリーニングされると”cleaned_hoge”のような形で、接頭語で”cleaned_”が付きます。
入力されたファイルと同じディレクトリに、出力されます。
免責事項
このプログラムを実行して何か損害が生じても、責任を負うことはできません。
自己責任で、使用してください。
Discussion