Python实战小项目之如何实现身份证信息校验
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍"Python实战小项目之如何实现身份证信息校验",在日常操作中,相信很多人在Python实战小项目之如何实现身份证信息校验问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
沃趣的数据库一体机怎么样
网络安全员工作职责
游侠服务器在哪里
我的世界服务器公会建设
上易网络技术有限公司怎么样
力控数据库备份
湖州软件开发定制平台
深圳大合网络技术
西安软件开发类院校
计算机网络技术与维护好吗
青岛软件开发助理招聘
网络安全 方面的期刊
自考计算机网络技术本科
湖州软件开发驻场价格表
特朗普律师德国服务器
如何访问redis数据库
合肥数据库在建设吗
杨浦区品牌软件开发品质保障
软件开发能做哪些副业
数据库表里的删除日志怎么查
最安全的开源数据库
钉钉服务器爆
河北公需网络安全答案
2019世界网络安全发展
宝山区网络技术服务厂家价格
四川医院子母钟服务器
公路网络安全几级
微信服务器只能和80端口通信
数据库营销就是一对一营销吗
郑州学网络技术什么学校好