前言
之前发现某公司泄露了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 所有中国人名处理后的