身份证号码检验python
时间: 2024-11-28 15:12:36 浏览: 0
在Python中,我们可以使用正则表达式库re来检查身份证号码的有效性。中国的身份证号码通常由18位数字组成,分为前6位地区码、第7到14位出生日期码、第15到17位顺序码,最后一位是校验码。检验规则相对复杂,包括奇偶校验和区域码对应的校验规则。
以下是一个简单的例子,展示如何编写一个函数来初步验证身份证号码:
```python
import re
def check_id(id_number):
# 正则表达式模式匹配身份证号码的基本结构
pattern = r'^\d{15}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$'
# 验证长度和基本结构
if not re.match(pattern, id_number):
return False
# 校验码计算部分比较复杂,这里仅做简化的验证,实际应用需要更精确的算法
sum_digits = sum(int(digit) * (i+1) for i, digit in enumerate(reversed(id_number[:-1]))) % 11
checksum = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'}[sum_digits]
# 如果最后一位校验码匹配,则认为有效
if id_number[-1] == checksum:
return True
else:
return False
# 示例使用
id_to_check = "123456789012345678"
result = check_id(id_to_check)
if result:
print("身份证号码有效")
else:
print("身份证号码无效")
阅读全文