Python实战小项目之如何实现身份证信息校验
发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,这篇文章主要介绍"Python实战小项目之如何实现身份证信息校验",在日常操作中,相信很多人在Python实战小项目之如何实现身份证信息校验问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2024年11月15日Python实战小项目之如何实现身份证信息校验
这篇文章主要介绍"Python实战小项目之如何实现身份证信息校验",在日常操作中,相信很多人在Python实战小项目之如何实现身份证信息校验问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python实战小项目之如何实现身份证信息校验"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
目的
制作个程序,输入身份证号码,输出如下信息
性别 : 男
地区 : 福建省龙岩市永定县
出生年月日: 2000年05月01日
出生当日派出所登记的第 1 个男孩
校验码: 0
身份证号真伪性: 真
所需文件与知识
身份证区域代码.xls(已上传)
身份证号码组成
身份证校验码算法
校验码算法
18位身份证=17位信息数据+1位校验码
1到6位 | 7到14位 | 15到16位 | 17位 | 18位 |
---|---|---|---|---|
区域代码 | 出生年月日 | 登记所代码 | 性别 | 校验码 |
性别:男生为奇数,女生为偶数
1表示第一个登记的男生
3表示第二个登记的男生
以此类推
校验算法详解
1到17位 每位 乘以 对应的权值 再求和
将结果对11取余数
根据余数找到对应的校验码
每一位对应的权值(17位信息数据,从左往右,第一位对应7,第二位对应9,以此类推)
weights=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
余数与校验码对应字典(2对应罗马数字"X"-十)
verification_dict={0:1, 1:0, 2:"X", 3:9, 4:8, 5:7, 6:6, 7:5, 8:4, 9:3, 10:2}
完整代码展示(你可以自己先做)
import pandas as pdimport numpy as npdata = pd.read_excel('身份证区域代码完整版.xls')# 读取18位身份证sfz=input()# 对身份证信息切片position=int(sfz[0:6])birthday=sfz[6:14]police_code=sfz[14:16]sex_code=int(sfz[16])verification=int(sfz[17])# 获取区域名字,如福建省龙岩市永定县position_name=data.iloc[data.loc[data['代码'] == position].index[0]]['名称']# 确定性别,并确定是该登记所第几个登记的def sex(n): train_list=[] male_list=[1,3,5,7,9] female_list=[0,2,4,6,8] if n in male_list: train_list.append('男') train_list.append(male_list.index(n)+1) else: train_list.append('女') train_list.append(female_list.index(n)+1) return train_list# 校验算法weights=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]sfz_code=[]for item in sfz: sfz_code.append(int(item)) weights_sfz=[]for i in sfz_code: for j in weights: weights_sfz.append(i*j)# 找到余数target=sum(weights_sfz)verification_dict={0:1, 1:0, 2:"X", 3:9, 4:8, 5:7, 6:6, 7:5, 8:4, 9:3, 10:2}# 找到余数对应的第18位校验码def verification_whether(target_n): return verification_dict[target_n]# 看看输入的身份证校验码和算出来的校验码是否一致,如果不一致,则是假身份证def verification_true_false(sfz_verification,target_n_whether): if sfz_verification == target_n_whether: return "真" else: return "假"# 将结果格式化打印出来print("性别 :",sex(sex_code)[0])print("地区 :",position_name)print("出生年月日: {}年{}月{}日".format(birthday[0:4],birthday[4:6],birthday[6:8]))print("出生当日派出所登记的第 {} 个{}孩".format(sex(sex_code)[1],sex(sex_code)[0]))print("校验码:",verification)print("身份证号真伪性:",verification_true_false(verification,verification_whether(target)))
到此,关于"Python实战小项目之如何实现身份证信息校验"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
身份
身份证
信息
代码
余数
性别
实战
项目
区域
算法
学习
年月
年月日
男生
一致
以此类推
号码
地区
数据
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mysql 数据库留后门
软件开发企业怎么做会计科目
能检索会议论文的外国数据库
便宜的服务器安全吗
百事网络技术有限公司电话
路南区数据网络技术售后服务
通信与网络技术期末
职中计算机网络技术考试题
汽车车型 数据库
sqlite数据库自定义函数
qq空间无法访问静态资源服务器
网络安全宣传小义工视频
福建数据库培训多少钱
两台服务器搭建私有云
嵩明提供软件开发市场报价
网络安全加固新技术
网络安全手势舞幼儿园
专业网络安全准入控制推荐
云计算网络安全问题研究
网络安全作业嘉峪关
云服务器和看手机挣钱
苹果无法接通激活服务器
梦幻诛仙09年追加服务器
数据库系统概论习题及解析
应用网络安全法的案例
江苏网络营销软件开发预算
济南靠谱云服务器搭建
广泛使用国际数据库管理系统
芜湖网络安全教育
拼车APP软件开发