自己写的一个脱敏方法,感觉不是很理想,发出来希望能和大家一起优化一下!

自己写的一个脱敏方法,感觉不是很理想,发出来希望能和大家一起优化一下!

自己写的一个脱敏方法,感觉不是很理想,发出来希望能和大家一起优化一下!


def check_idcard(idcard):"""身份证号码校验:param idcard::return:"""message = ''errors = ['验证通过!', '身份证号码位数不对!', '身份证号码出生日期超出范围或含有非法字符!', '身份证号码校验错误!', '身份证地区非法!']area = {"11": "北京", "12": "天津", "13": "河北", "14": "山西", "15": "内蒙古", "21": "辽宁", "22": "吉林", "23": "黑龙江","31": "上海", "32": "江苏", "33": "浙江", "34": "安徽", "35": "福建", "36": "江西", "37": "山东", "41": "河南", "42": "湖北","43": "湖南", "44": "广东", "45": "广西", "46": "海南", "50": "重庆", "51": "四川", "52": "贵州", "53": "云南", "54": "西藏","61": "陕西", "62": "甘肃", "63": "青海", "64": "宁夏", "65": "新疆", "71": "台湾", "81": "香港", "82": "澳门", "91": "国外"}idcard = str(idcard)idcard = idcard.strip()  # 删除前后空格id_card_list = list(idcard)# 地区校验if not area[idcard[0:2]]:return {"status": False, "message": "身份证地区非法!"}# 15位身份号码检测if len(idcard) == 15:if ((int(idcard[6:8]) + 1900) % 4 == 0 or ((int(idcard[6:8]) + 1900) % 100 == 0 and (int(idcard[6:8]) + 1900) % 4 == 0)):e_reg = re.compile('[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|''[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$')  # //测试出生日期的合法性else:e_reg = re.compile('[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|''[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$')  # //测试出生日期的合法性if re.match(e_reg, idcard):return {"status": True, "message": "验证通过!"}else:return {"status": False, "message": "身份证号码出生日期超出范围或含有非法字符!"}# 18位身份号码检测elif len(idcard) == 18:# 出生日期的合法性检查if int(idcard[6:10]) % 4 == 0 or (int(idcard[6:10]) % 100 == 0 and int(idcard[6:10]) % 4 == 0):e_reg = re.compile('[1-9][0-9]{5}(19[0-9]{2}|20[0-9]{2})((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)''(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$')  # //闰年出生日期的合法性正则表达式else:e_reg = re.compile('[1-9][0-9]{5}(19[0-9]{2}|20[0-9]{2})((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)''(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$')  # //平年出生日期的合法性正则表达式# //测试出生日期的合法性if re.match(e_reg, idcard):# //计算校验位S = (int(id_card_list[0]) + int(id_card_list[10])) * 7 + (int(id_card_list[1]) +int(id_card_list[11])) * 9 + (int(id_card_list[2]) + int(id_card_list[12])) * 10 + (int(id_card_list[3]) + int(id_card_list[13])) * 5 + (int(id_card_list[4]) + int(id_card_list[14])) * 8 + (int(id_card_list[5]) + int(id_card_list[15])) * 4 + (int(id_card_list[6]) + int(id_card_list[16])) * 2 + int(id_card_list[7]) * 1 + int(id_card_list[8]) * 6 + int(id_card_list[9]) * 3Y = S % 11M = "F"JYM = "10X98765432"M = JYM[Y]  # 判断校验位# print(S)# print(Y)# print(M)if M == id_card_list[17]:  # 检测ID的校验位return {"status": True, "message": "验证通过!"}else:return {"status": False, "message": "身份证号码校验错误!"}else:return {"status": False, "message": "身份证号码出生日期超出范围或含有非法字符!"}else:return {"status": False, "message": "身份证号码位数不对!"}
from LAC import LAC
lac = LAC(mode='lac')def data_cleaning(content):# 身份证号码id_card_list = re.findall(r"\d{18}|\d{17}[xX]|\d{15}", content)if id_card_list:for i in id_card_list:if len(i) == 18:content = content.replace(i, i.replace(i[10:16], "*" * 6))else:content = content.replace(i, i.replace(i[7:13], "*" * 6))# 手机号telephone = re.findall(r"1[3456789]\d{9}", content)if telephone:for i in telephone:content = content.replace(i, i.replace(i[3:7], "*" * 4))# 人名lac_result = lac.run(content)for i in range(len(lac_result[0])):if lac_result[1][i] == 'PER':person_name = lac_result[0][i]new_person_name = person_name[0] + "某" * (len(person_name) - 1)content = content.replace(person_name, new_person_name)return content

python 数据脱敏相关推荐

  1. Python使用openpyxl和pandas处理Excel文件实现数据脱敏案例一则

    推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),清华大学出版社,2020年6月第1次印刷 送书活动火爆进行中:董老师又双叒叕送书啦,30本 ...

  2. python个人数据脱敏_数据脱敏的处理方法及查询

    [摘要] 关键词:集算器.SPL.数据脱敏.报表 1).数据脱敏是"指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护.在涉及客户安全数据或者一些商业性敏感数据的情况下, ...

  3. 数据脱敏python

    最近在对数据做脱敏的事情,第一次接触这方面的,所以将自己的做法记录了下来,希望对大家有所帮助,仅是自己的一点拙见. 1.数据脱敏定义 数据脱敏(Data Masking),又称数据混淆.数据漂白.数据 ...

  4. 2016版excel_Python使用openpyxl和pandas处理Excel文件实现数据脱敏案例一则

    推荐图书:<Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),清华大学出版社,2020年6月第1次印刷 送书活动火爆进行中:董老师又双叒叕送书啦,30本& ...

  5. Pandas解决excel数据脱敏和导入新sheet不覆盖原sheet

    做个存档 实验数据集目录下是某高校学生修读课程的成绩情况,需要对数据库相关(注:表格中<数据库系统技术及应用>和<数据库课程设计>是同一门课)课程成绩进行分析.请编写程序完成以 ...

  6. python数据可视化利用_利用pyecharts实现python数据可视化

    **python 利用pyecharts实现python数据可视化 **web pyecharts是一种交互式图表的表达方式. pyecharts是一款将python与echarts结合的强大的数据可 ...

  7. 《Python数据科学指南》——1.8 使用迭代器

    本节书摘来自异步社区<Python数据科学指南>一书中的第1章,第1.8节,作者[印度] Gopi Subramanian ,方延风 刘丹 译,更多章节内容可以访问云栖社区"异步 ...

  8. 《Python数据可视化编程实战》——5.5 用OpenGL制作动画

    本节书摘来异步社区<Python数据可视化编程实战>一书中的第5章,第5.5节,作者:[爱尔兰]Igor Milovanović,更多章节内容可以访问云栖社区"异步社区" ...

  9. 大厂也在用的 6种 数据脱敏方案,别做泄密内鬼

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 最近连着几天晚上在家总是接到一些奇奇怪怪的电话," ...

最新文章

  1. RK3399 Ubuntu修改任务栏为自动隐藏和修改桌面背景
  2. JAVA关于父亲节的代码_关于父亲节的经典语录
  3. iOS攻防——(四)class-dump-与-Dumpdecrypted-使用
  4. 二进制文本编辑器_Textadept for mac(文本编辑) v10.5免费版
  5. Spark集群worker启动起来,一会停掉原因--尝试
  6. 情感分析入门[2]-一些数学工具
  7. paip.2013年技术趋势以及热点 v3.0 cao
  8. 一个前端写的php博客系统--支持markdown哦
  9. excel部分快捷键
  10. 【论文学习】Large-scale Video Classification with Convolutional Neural Networks
  11. 计算机桌面锁屏壁纸怎么换,电脑怎么换锁屏壁纸
  12. 恶意软件隐身术:把可执行文件隐藏在注册表里
  13. 漫谈软硬件的开发(转载)
  14. Java开发入职新公司如何快速上手业务?
  15. 阿里云安全组规则授权对象设置为固定IP段访问
  16. 敏捷测试--开源电子书连载
  17. 荣耀最强拍照手机诞生:荣耀20系列塑造的“潮流科技宇宙”
  18. 记一次Redis哨兵机制【主机挂了无法切换其他从机】的问题
  19. 数据分析python面试题_10道Python常见面试题
  20. CH340 各型号的区别

热门文章

  1. Postman Chrome插件
  2. PHP简单项目案例(改进版)
  3. linux sftp账号密码脚本传文件,关于shell:如何使用Bash脚本中的密码运行sftp命令?...
  4. 2017考研复试选导师,最该权衡的7个方面
  5. 深入解析神经网络(Neural Networks)工作原理
  6. 说一说物理中的dynamics和kinetics
  7. 06 go启动生命周期M0和G0
  8. c#调用C++写的dll导出类,如何实现
  9. Origin如何绘制二维图形?
  10. 电脑出问题了怎么重装系统修好