python身份证号码校验
时间: 2023-11-06 11:58:35 浏览: 131
以下是Python代码,用于验证中国身份证号码的有效性:
```
def validate_id_number(id_number):
# 正则表达式匹配身份证号码格式
pattern = r'^[1-9]\d{5}(19\d{2}|20[0-2]\d)(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}([0-9]|X)$'
if not re.match(pattern, id_number):
return False
# 加权因子和校验码对应值
weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_code = {'0': '1', '1': '0', '2': 'X', '3': '9', '4': '8', '5': '7', '6': '6', '7': '5', '8': '4', '9': '3', '10': '2'}
# 计算校验码
check_sum = 0
for i in range(len(id_number) - 1):
check_sum += int(id_number[i]) * weight_factor[i]
check_code_number = check_sum % 11
check_code_value = check_code[str(check_code_number)]
# 校验身份证号码最后一位是否正确
if id_number[-1] == check_code_value:
return True
else:
return False
```
该函数接受一个字符串参数 id_number,表示要验证的身份证号码。如果该身份证号码格式正确且校验码也正确,则返回 True,否则返回 False。
阅读全文