python将汉字转化为拼音

python将汉字转化为拼音

安装

依赖python包:pypinyin 直接pip install pypinyin即可

常用方法及场景案例

from pypinyin import pinyin, lazy_pinyin, Style

# 汉字转化为拼音
hanzitopinyin = pinyin("中国")
# print(hanzitopinyin)  # [['zhōng'], ['guó']]

# 开启多音字
duoyinzi = pinyin("和朴", heteronym=True)
# print(duoyinzi)  # [['hé', 'hè', 'huò', 'huó', 'hú'], ['pǔ', 'pò', 'pū', 'pō', 'piáo']]

# 设置风格 FIRST_LETTER首字母风格,只返回拼音的首字母部分。
style = pinyin("中心", style=Style.FIRST_LETTER)
# print(style)  # [['z'], ['x']]

# 不考虑多音字的情况
ret = lazy_pinyin("中心")
# print(ret)  # ['zhong', 'xin']

"""
需求场景:添加账号,传入中文姓名,将中文姓名自动转化为拼音,若有姓名重复,在后面按升序加1
如:传入张三,需要得到zhangs,已存在张三,需要得到zhangs1
"""

# 已存在用户
user_list = ["wumj", "qinsh", "liub"]
print("已经存在的用户有:{}".format(user_list))


def get_user(new_user_list):
    """
    和已知用户比对,得到最终账号
    :param new_user_list: 中文姓名转化后的账号名
    :return:
    """
    print("姓名转化后的用户有:{}".format(new_user_list))
    username_list = []
    for new_user in new_user_list:
        i = 1
        while True:
            username = new_user
            if username in user_list:
                username = username + str(i)
                i += 1
                if username not in user_list:
                    username_list.append(username)
                    break
            elif username not in user_list:
                username_list.append(username)
                break
    print("最终需要添加的用户为:{}".format(username_list))


def name_to_user(name_list):
    """
    将中文姓名按要求转化为拼音(账号样式)
    :param name_list: 姓名列表
    :return:
    """
    new_user_list = []
    for name in name_list:
        # 将中文姓名转化为拼音
        user = lazy_pinyin(name)
        # print(user)
        # 返回结果为 姓 和 名 的列表,账号由姓的拼音全称+名的第一个字母组成
        user_len = len(user)
        new_user = ""
        i = 0
        while i < user_len:
            if i == 0:
                new_user += user[i]
            else:
                new_user += user[i][:1]
            i += 1
            if i == user_len:
                break
        new_user_list.append(new_user)
    # print(new_user_list)
    get_user(new_user_list)


def main():
    name_str = input("请输入中文姓名:")

    # 输入姓名转化为列表
    name_list = name_str.split()
    name_to_user(name_list)


if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值