生成实用人名字典

前言

之前发现某公司泄露了wsdl,通过它可以获得getCurrentUser接口,只需要输入用户名就可以获得该用户的具体信息。而此系统的用户名规则为:

  • 用户名全为小写
  • 姓名为两个字的话,姓和名都是全拼。例如:陈浩的用户名为chenhao
  • 姓名为三个字的话,姓为全拼,名取首字母。例如:李大璐的用户名为lidl
  • 如果一样,在后面按26个字母的顺序在末尾加字母以区别。例如:张文轩、张文宣、张文璇的用户名为zhangwx、zhangwxa、zhangwxb

手上有中国人名的字典,每个字的拼音之间带空格

上代码

# coding = utf-8

new_file = "new.txt"
//新生成的文件
name_list = []
def parse():
    with open("./name_cn.txt", encoding="utf-8") as f:
    //打开文件
        for line in f:
        //读取每一行,这里line的数据类型是str
            line_data = line.split()
            //split()不带参数,默认以空格进行分割,得到的是一个列表
            length = len(line_data)
            //length为列表内元素的个数
            if length == 2:
            //元素为2,说明名字为两个字,直接拼接就行
                line_data.append("\n")
                name = "".join(line_data)
                //利用字符串的join()把列表中的元素拼接起来
            else:
                line_data = line_data[0], line_data[1][0], line_data[2][0], "\n"
                //得到的是有3个元素组成的元组,元素1是姓的全拼,元素2是第二个汉字的拼音首字母,元素3是第三个汉字的拼音首字母
                name = "".join(line_data)
                //利用字符串的join()把元组中的元素拼接起来
            name_list.append(name)
            //利用append()把name添加到列表末尾
    with open(new_file, "w+", encoding="utf-8") as f:
        f.writelines(name_list)
        //使用writelines()写入新文件

if __name__ == '__main__':
    parse()

:我写的代码太菜了,这是公司搞python开发的大佬写的,感谢彭大佬

得到的字典

想法是生成4个字典:

  • small.txt top500人名,不带相同名字处理
  • medium.txt top500人名,包含加字母处理,a,b,c
  • big.txt 在biggest中取出全国按照人数排名的前14姓氏的用户名
  • biggest.txt 所有中国人名处理后的
    生成实用人名字典
上一篇:序列加密


下一篇:NewOJ 题解 [newoj-1040-阶乘之和] (Python)