Python实战小项目之如何实现身份证信息校验
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍"Python实战小项目之如何实现身份证信息校验",在日常操作中,相信很多人在Python实战小项目之如何实现身份证信息校验问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2025年11月12日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安全错误
数据库的锁怎样保障安全
软件开发类的公司注册
ipv6 联通dns服务器
能远程但不能用数据库工具连接
南沙区质量网络技术开发展示
高校网络安全工程师
中国联通采用的网络技术有
没学过网络技术考三级
网络安全陕西
两台电脑上的数据库怎么同步
安卓数据库必须依赖的两个类
软件开发企业 费用
江西首届网络安全大赛
数据库职业需要的素养要求
服务器主板电池多少钱
将电脑做成游戏服务器
上饶一子网络技术有限公司
正规网络安全管理平台价格
网络安全第五空间影评
首席网络安全官待遇
中公优网络安全吗
自学网络技术面试的最大问题
穿透式数据库碰撞
当前常见的网络安全问题
软件开发创业难不难
武汉网络安全
有哪些法律检索数据库或网址
管理是一种服务器
微信公众号功能对数据库
数据库系统安全层次有
idea连数据库的工具