问题表述
现有一个人员清单,包含姓名、学历和毕业学校等信息。现在需要对姓名进行脱敏处理,即把名字标记为*,只显示人员的姓。原表格如下:
希望的表格样式如下:
解决思路
- 把名单信息从excel文件中读出来
- 取出姓名那一列
- 保留第一个姓,其余用星号替换。替换思路为:拿到姓名字符串的第一个字符,根据字符串长度添加*
- 重新组成名单信息
- 把脱敏的数据写入到一个新的Excel表
代码实现
import pandas as pd
filename='./files/namelist.xlsx'
#读取数据
file_obj=pd.read_excel(filename)
#获取姓名那一列数据
names=file_obj.iloc[:,1]
#新建一个列表,用于存放脱敏过的姓名
masked_name=[]
for name in names:
maskname=name[0] #获取姓名的第一个字符
for i in range(len(name)-1):
maskname = maskname + '*' #根据姓名长度加星号
masked_name.append(maskname) #把脱敏的姓名依次加入到列表
#把数据的姓名列替换为脱敏的姓名列
file_obj.iloc[:,1]=masked_name
#把处理好的名单信息,写回到一个新文件中
file_obj.to_excel('./files/maskedname.xlsx',index=False)#index=False表示不在新表中添加行名
若最后一行代码不说明index=Flase,则结果多出一个行名,如下所示:
转载:https://blog.csdn.net/weixin_45690272/article/details/101474290
查看评论