Skip to content
中华人民共和国居民身份证、中华人民共和国港澳居民居住证以及中华人民共和国台湾居民居住证号码验证工具(Python 版)
Python
Branch: master
Clone or download
Latest commit 4d5c7a7 May 1, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
id_validator Release 1.0.11 May 1, 2019
.gitignore First commit Sep 15, 2018
.travis.yml Remove Python 3.7, Not support yet Nov 8, 2018
LICENSE First commit Sep 15, 2018
README.rst Update README Oct 29, 2018
setup.py Release 1.0.11 May 1, 2019
test_validator.py get_info 返回值添加省市区三级列表 Oct 29, 2018

README.rst

中华人民共和国居民身份证中华人民共和国港澳居民居住证以及中华人民共和国台湾居民居住证号码验证工具(Python 版)支持 15 位与 18 位号码。仅支持 Python 3。

https://travis-ci.org/jxlwqq/id-validator.py.svg?branch=master

安装

pip install id-validator

使用

440308199901101512610104620927690 示例大陆居民身份证均为随机生成的假数据,如撞车,请联系删除。 810000199408230021830000199201300022 示例港澳台居民居住证为北京市公安局公布的居住证样式号码。

验证身份证号合法性

验证身份证号是否合法,合法返回 True,不合法返回 False

from id_validator import validator

validator.is_valid('440308199901101512') # 大陆居民身份证 18 位
validator.is_valid('610104620927690')    # 大陆居民身份证 15 位
validator.is_valid('810000199408230021') # 港澳居民居住证 18 位
validator.is_valid('830000199201300022') # 台湾居民居住证 18 位

获取身份证号信息

当身份证号合法时,返回分析信息(地区、出生日期、星座、生肖、性别、校验位),不合法返回 False

from id_validator import validator

validator.get_info('440308199901101512') # 18 位
validator.get_info('610104620927690')    # 15 位

返回信息格式如下:

{
'address_code'   : '440308',                   # 地址码
'abandoned'      : 0,                          # 地址码是否废弃,1 为废弃的,0 为正在使用的
'address'        : '广东省深圳市盐田区',          # 地址
'address_tree'   : ['广东省', '深圳市', '盐田区'] # 省市区三级列表
'birthday_code'  : '1999-01-10',               # 出生日期
'constellation'  : '摩羯座',                    # 星座
'chinese_zodiac' : '卯兔',                      # 生肖
'sex'            : 1,                          # 性别,1 为男性,0 为女性
'length'         : 18,                         # 号码长度
'check_bit'      : '2'                         # 校验码
}
注:判断地址码是否废弃的依据是中华人民共和国行政区划代码历史数据集,本数据集的采集源来自:中华人民共和国民政部,每年更新一次。本数据集采用 csv 格式存储,方便大家进行数据分析或者开发其他语言的版本。

生成可通过校验的假数据

伪造符合校验的身份证:

from id_validator import validator

validator.fake_id()                                      # 18 位
validator.fake_id(False)                                 # 15 位
validator.fake_id(True, '上海市', '2000', 1)              # 生成出生于 2000 年上海市的男性居民身份证
validator.fake_id(True, '南山区', '1999', 0)              # 生成出生于 1999 年广东省深圳市南山区的女性居民身份证
validator.fake_id(True, '江苏省', '200001', 1)            # 生成出生于 2000 年 1 月江苏省的男性居民身份证
validator.fake_id(True, '厦门市', '199701', 0)            # 生成出生于 1997 年 1 月福建省厦门市的女性居民身份证
validator.fake_id(True, '台湾省', '20131010', 0)          # 生成出生于 2013 年 10 月 10 日台湾省的女性居民居住证
validator.fake_id(True, '香港特别行政区', '19970701', 0)   # 生成出生于 1997 年 7 月 1 日香港特别行政区的女性居民居住证

身份证升级

15 位号码升级为 18 位:

from id_validator import validator

validator.upgrade_id('610104620927690')

参考资料

Change Log

  • 1.0.10: get_info 返回值添加省市区三级列表

License

MIT

You can’t perform that action at this time.