📜  计算给定数组中存在的不同电子邮件(1)

📅  最后修改于: 2023-12-03 15:28:04.606000             🧑  作者: Mango

计算给定数组中存在的不同电子邮件

在实际开发中,我们可能会需要从一些数据中获取到其中出现的电子邮件地址,并计算这些邮件地址的不同个数。这个需求在很多场景中都有用到,例如数据分析、广告推送等方面。

以下是一个实现这个需求的 Python 程序代码:

import re

def count_unique_emails(emails):
    unique_emails = set()

    # 针对每个电子邮件地址进行处理
    for email in emails:
        # 使用正则表达式匹配电子邮件地址中的用户名和域名部分
        match = re.match(r"(.+)@(.+)", email)
        if match:
            # 去掉用户名中的点号(.)和加号(+)
            username = match.group(1).replace(".", "")
            if "+" in username:
                username = username[:username.index("+")]
            # 将处理好的电子邮件地址添加到集合中
            unique_emails.add(username + "@" + match.group(2))

    # 返回不同电子邮件地址的数量
    return len(unique_emails)

上述代码通过使用正则表达式,将每个电子邮件地址中的用户名和域名部分提取出来,然后去掉用户名中的点号和加号(如果有的话),最终得到标准的电子邮件地址,并将其添加到一个集合中。最后返回集合中不同电子邮件地址的数量即可。

以下是一个使用上述代码的示例:

emails = [
    "john.smith@gmail.com",
    "john.smith+work@gmail.com",
    "john.smith@yahoo.com",
    "johnsmith@yahoo.com",
    "john.smith+personal@gmail.com",
    "j.smith@gmail.com",
    "j.smith@yahoo.com",
    "john.smith@outlook.com",
    "johnsmith@outlook.com",
    "jsmith@yahoo.com",
    "jsmith@gmail.com",
    "john.smith@comcast.net",
    "johnsmith1@comcast.net",
    "johnsmith2@comcast.net",
    "johnsmith3@comcast.net",
    "johnsmith4@comcast.net",
    "johnsmith5@comcast.net"
]

print(count_unique_emails(emails)) # 输出结果为 12

上述示例中给定了一个包含各种类型电子邮件地址的列表,程序将计算其中不同的电子邮件地址数量并输出结果为 12。

以上就是本文介绍的计算给定数组中存在的不同电子邮件地址的方法和实现,希望能对你有所帮助。