千家信息网

Python实战小项目之如何实现身份证信息校验

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Python实战小项目之如何实现身份证信息校验",在日常操作中,相信很多人在Python实战小项目之如何实现身份证信息校验问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2026年11月02日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安全错误 数据库的锁怎样保障安全 互联网与科技 互联网科技工作委员会毛军 互联网金融 科技金融 互联网 科技创业 礼当家互联网科技 深圳齐家互联网科技 碳银互联网科技有限公司 广州善班互联网科技 撒么互联网科技公司 互联网科技咨询 上海电发互联网科技有限公司 互联网教育科技公司vipkid 宁夏科技产业互联网案例 厦门比较好的科技互联网公司 厦门千工互联网科技有限公司 洛阳昕诺飞互联网科技有限公司 明优互联网科技有限公司 上海科技产业互联网平台 互联网与数字科技关系 上海万顺科技互联网有限公司招聘 互联网科技大会案例 互联网科技生活的内容 富国互联网科技创新基金 广州优美互联网科技 互联网系的金融科技公司 贵州叶脉互联网科技有限公司所属行业 福建科技产业互联网发展 互联网金融科技展 国大互联网教育科技有限公司薪资 中国互联网有什么科技
0