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中的正则表达式的用法
Apr 09 Python
Python绘制3d螺旋曲线图实例代码
Dec 20 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
对python中的xlsxwriter库简单分析
May 04 Python
python re库的正则表达式入门学习教程
Mar 08 Python
python判断无向图环是否存在的示例
Nov 22 Python
python的range和linspace使用详解
Nov 27 Python
Python实现屏幕录制功能的代码
Mar 02 Python
导致python中import错误的原因是什么
Jul 01 Python
python使用多线程查询数据库的实现示例
Aug 17 Python
Django自带用户认证系统使用方法解析
Nov 12 Python
pytorch常用数据类型所占字节数对照表一览
May 17 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实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
vue中本地静态图片路径写法
2018/03/06 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
Python 通过URL打开图片实例详解
2017/06/01 Python
python的exec、eval使用分析
2017/12/11 Python
Python实现的购物车功能示例
2018/02/11 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
使用python实现滑动验证码功能
2019/08/05 Python
对python中各个response的使用说明
2020/03/28 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
浅谈Python3中print函数的换行
2020/08/05 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
土木工程师岗位职责
2013/11/24 职场文书
企业宣传工作方案
2014/06/02 职场文书
思想品德评语大全
2014/12/31 职场文书
华山导游词
2015/02/03 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers