Python解析姓名自动生成邮箱

现在很多公司都会有属于自己公司的专属邮箱。但是邮箱重复确实一个很麻烦的事情。

业务需求如下:

自动解析姓名为拼音姓和拼音名,由拼音姓和拼音名组装一个邮箱,如果组装的邮箱重复则需要加上数字,数据累计向上。
from xpinyin import Pinyin

# 邮箱后缀
email_suffix = '@163.com'
# 历史邮箱
history_email = [
    'wenfeng.gu@163.com',
    'wen.gu@163.com',
    'wenfeng.gu1@163.com',
    'wenfeng.gu2@163.com',
    'wenfeng.guo@163.com',
]

compound_surname = [
    '欧阳', '太史', '端木', '上官', '司马', '东方', '独孤', '南宫', '万俟', '闻人', '夏侯', '诸葛', '尉迟', '公羊',
    '赫连', '澹台', '皇甫', '宗政', '濮阳', '公冶', '太叔', '申屠', '公孙', '慕容', '仲孙', '钟离', '长孙', '宇文',
    '司徒', '鲜于', '司空', '闾丘', '子车', '亓官', '司寇', '巫马', '公西', '颛孙', '壤驷', '公良', '漆雕', '乐正',
    '宰父', '谷梁', '拓跋', '夹谷', '轩辕', '令狐', '段干', '百里', '呼延', '东郭', '南门', '羊舌', '微生', '公户',
    '公玉', '公仪', '梁丘', '公仲', '公上', '公门', '公山', '公坚', '左丘', '公伯', '西门', '公祖', '第五', '公乘',
    '贯丘', '公皙', '南荣', '东里', '东宫', '仲长', '子书', '子桑', '即墨', '达奚', '褚师', '吴铭'
]

# 把姓名解析为拼音
name = '谷文峰'

# 仅支持2-4个字的姓名
if len(name) <= 4:
    # 判断是否复姓
    if name[:2] in compound_surname:
        last_name = name[:2]
        first_name = name[2:]
    else:
        last_name = name[:1]
        first_name = name[1:]

    pinyin = Pinyin()

    en_last_name = pinyin.get_pinyin(last_name, splitter='').capitalize().lower()
    en_first_name = pinyin.get_pinyin(first_name, splitter='').capitalize().lower()

    email = en_first_name + '.' + en_last_name

    # 先把历史的邮箱后缀全部去掉
    _history_email = [i.split('@')[0] for i in history_email]
    print(_history_email)


    # 判断是否重复, 如果重复, 则在后面加数字,如果已有数字, 则加1

    def is_duplicate(email, _history_email):
        if email in _history_email:
            return True
        else:
            return False


    while is_duplicate(email, _history_email):
        if email[-1].isdigit():
            email = email[:-1] + str(int(email[-1]) + 1)
        else:
            email = email + '1'

    print(email + email_suffix)

以上代码可实现此功能。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值