跳转到主要内容

一个用于验证和从国家身份证号码中提取信息的库

项目描述

一个用于验证国家身份证号码并从中提取任何嵌入数据的库。

目前仅实现了南非和津巴布韦,但未来还将添加更多国家

安装

pip install id-validation

用法

from id_validation import ValidatorFactory
validator = ValidatorFactory.get_validator("ZW")

# Use the validate method to test whether a number is valid or not according to country-specific rules
assert validator.validate("50-025544-Q-12")

# The extract data method returns any data that might be encoded into the id number. This is country specific.
data = validator.extract_data("50-025544-Q-12")
assert data["registration_region"] == "Mutasa"
assert data["district"] == "Chivi"
assert data["sequence_number"] == "025544"

国家

以下代码可用

BW - Botswana
NG - Nigeria
ZA - South Africa
ZA_OLD - South African (Apartheid-era). See the note below for more information
ZW - Zimbabwe

博茨瓦纳(BW)

注意 - 验证逻辑是根据在线可获得的经验性信息实现的,而不是根据官方文档。

>>> import id_validation
>>> from id_validation import ValidatorFactory
>>> validator = ValidatorFactory.get_validator("BW")
>>> validator.validate("379219515")
True
>>> validator.extract_data("379219515")
{'gender': 'Male'}

尼日利亚

尼日利亚身份证号码由11个随机选择的数字组成。请在此处找到相关规定 这里

>>> import id_validation
>>> from id_validation import ValidatorFactory
>>> validator = ValidatorFactory.get_validator("NG")
>>> validator.validate("35765421356")
True

南非(ZA)

南非身份证包含以下信息

  • 出生日期
  • 性别
  • 公民身份(公民或永久居民)
>>> import id_validation
>>> from id_validation import ValidatorFactory
>>> validator = ValidatorFactory.get_validator("ZA")
>>> validator.validate("7106245929185")
True
>>> validator.extract_data("7106245929185")
{'dob': datetime.datetime(1971, 6, 24, 0, 0), 'gender': <GENDER.MALE: 1>, 'checksum': 5, 'citizenship': <CITIZENSHIP_TYPE.PERMANENT_RESIDENT: 1>}

南非 - 阿帕ルト时期(ZA_OLD)

阿帕ルト时期南非身份证包含以下信息

  • 出生日期
  • 性别
  • 种族
>>> import id_validation
>>> from id_validation import ValidatorFactory
>>> validator = ValidatorFactory.get_validator("ZA_OLD")
>>> validator.validate("7106245929185")
True
>>> validator.extract_data("7106245929185")
{'dob': datetime.datetime(1971, 6, 24, 0, 0), 'gender': <GENDER.MALE: 1>, 'checksum': 5, 'race': <RACE.CAPE_COLOURED: 1>}

注意

这些身份证号码在阿帕ルト时期使用过。它们编码了ID持有者的种族。1986年身份识别法取消了此标识符,并将所有身份证号码更改为更现代的版本,该版本仅编码公民身份。此验证器包含为完整性。我从未在任何我工作过的数据集中看到过旧身份证号码,因此除非您确定您的身份证是1986年之前的,否则请避免使用它。更多信息可以在 这里找到

津巴布韦(ZW)

津巴布韦身份证包含以下信息

  • 注册区域
  • 父亲的区域
>>> import id_validation
>>> from id_validation import ValidatorFactory
>>> validator = ValidatorFactory.get_validator("ZW")
>>> validator.validate("50-025544-Q-12")
True
>>> validator.extract_data("50-025544-Q-12")
{'registration_region': 'Mutasa', 'district': 'Chivi', 'sequence_number': '025544'}

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

id-validation-0.5.0.tar.gz (9.1 kB 查看散列值)

上传时间

构建分布

id_validation-0.5.0-py3-none-any.whl (9.4 kB 查看散列值)

上传时间 Python 3

由以下组织支持