本文主要介绍“如何在Python实战小项目中验证身份证信息”。在日常操作中,相信很多人对Python实战小项目中如何验证身份证信息有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解决“Python实战小项目中如何验证身份证信息”的疑惑。接下来,请和边肖一起学习!
00-1010创建一个程序,输入身份证号,并输出以下信息。
性别:男性
地点:福建省龙岩市永定县。
出生日期:2000年5月1日。
第一个男孩出生当天在警察局登记。
校验码:0
身份证号码真实性:真实。
00-1010身份证区号。xls(已上传)。
身份证号码的构成
身份证校验码算法
00-1010 18位身份证=17位信息数据1位校验码。
1到6位,7到14位,15到16位,17位和18位,区号,出生日期,登记日期,代码,性别校验码,性别:男孩奇数,女孩偶数。
1表示第一个注册的男孩。
3表示第二个注册男孩。
等等
00-1010 1到17位各乘以相应的权重,然后求和。
结果是11的余数。
根据余数找到对应的校验码。
每个比特对应的权重(17比特的信息数据,从左到右,第一个比特对应7,第二个比特对应9,以此类推)。
权重=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]对应余数和校验码的字典(2对应罗马数字“x”10)。
verification_dict={0:1,
1:0,
2:'X ',
3:9,
4:8,
5:7,
6:6,
7:5,
8:4,
9:3,
(=NationalBureauofStandards)国家标准局
p; 10:2}
完整代码展示(你可以自己先做)
import pandas as pd import numpy as np data = 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)%11 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实战小项目之如何实现身份证信息校验”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/38075.html