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本地与全局命名空间用法实例
Jun 16 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
对命令行模式与python交互模式介绍
May 12 Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
python标准库os库的函数介绍
Feb 12 Python
详解python常用命令行选项与环境变量
Feb 20 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 Python
如何利用python 读取配置文件
Jan 06 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用户指南-cookies部分
2006/10/09 PHP
深入php之规范编程命名小结
2013/05/15 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
PHP实现简易计算器功能
2020/08/28 PHP
JS链式调用的实现方法
2013/03/07 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
vue获取验证码倒计时组件
2019/08/26 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
用Python写一个无界面的2048小游戏
2016/05/24 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
美国眼镜网站:LensCrafters
2020/01/19 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
工程管理造价应届生求职信
2013/11/13 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
面试必备的求职信
2014/05/25 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
前台岗位职责
2015/02/13 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL
Tomcat用户管理的优化配置详解
2022/03/31 Servers
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript
Python如何将list中的string转换为int
2022/07/15 Ruby