python验证身份证信息实例代码


Posted in Python onMay 06, 2019

identity-card

验证身份证号码的正确性,不能仅仅通过正则表达式来验证,我们都知道我国的身份证一共是18位,由十七位数字本体码和一位校验码组成。

其排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。

  1. 地址码 (身份证号码前六位);表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码。
  2. 出生日期码 (身份证号码第七位到第十四位);表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
  3. 顺序码 (身份证号码第十五位到十七位);表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
  4. 校验码(身份证号码最后一位);是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,X是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

校验码计算步骤

十七位数字本体码加权求和公式
S = Sum(Ai * Wi), i = 0, … , 16 ,先对前17位数字的权求和

Ai:表示第i位置上的身份证号码数字值(0~9)

Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加权因子)

计算模
Y = mod(S, 11)

根据模,查找得到对应的校验码
Y: 0 1 2 3 4 5 6 7 8 9 10

校验码: 1 0 X 9 8 7 6 5 4 3 2

对应的代码校验如下:

Java

public class IdentityCard{
  int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};  //十七位数字本体码权重
  char[] valid={ '1','0','X','9','8','7','6','5','4','3','2'};  //mod11,对应校验码字符值

  ///card是除去最后一位前17位的号码
  public char getValidateCode(String card){
    int sum=0;
    int mode=0;
    for(int i=0;i<card.length();i++){
      sum=sum+Integer.parseInt(String.valueOf(card.charAt(i)))*weight[i];
    }
    mode=sum%11;
    return valid[mode];
  }
}

python

def get_id_card_verify_number(id_card):
  factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
  check_code_list = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
  check_sum = sum([a * b for a, b in zip(factor, [int(a) for a in id_card[0:-1]])])
  return check_code_list[check_sum % 11]

python验证身份证信息实例代码

总体代码(代码地址:https://github.com/lucas234/identity-card ):

以上所述是小编给大家介绍的python验证身份证信息的方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python基于multiprocessing的多进程创建方法
Jun 04 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
python批量制作雷达图的实现方法
Jul 26 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python实现一个简单的udp通信的示例代码
Feb 01 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
Django stark组件使用及原理详解
Aug 22 Python
Python使用sqlite3模块内置数据库
May 07 Python
python装饰器三种装饰模式的简单分析
Sep 04 Python
 python中的元类metaclass详情
May 30 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 #Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 #Python
Python两台电脑实现TCP通信的方法示例
May 06 #Python
python3利用Socket实现通信的方法示例
May 06 #Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 #Python
Python Flask 搭建微信小程序后台详解
May 06 #Python
Python玩转PDF的各种骚操作
May 06 #Python
You might like
用PHP实现递归循环每一个目录
2010/08/08 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
php操作access数据库的方法详解
2017/02/22 PHP
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
在小程序开发中使用npm的方法
2018/10/17 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
详解vue路由
2020/08/05 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
python使用urllib2提交http post请求的方法
2015/05/26 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
PyTorch实现AlexNet示例
2020/01/14 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
儿童生日会策划方案
2014/05/15 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
微信小程序实现录音Record功能
2021/05/09 Javascript
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android
Javascript webpack动态import
2022/04/19 Javascript
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers