用python 身份证的秘密
时间: 2024-01-26 14:10:34 浏览: 152
身份证号码中包含了很多的信息,可以通过身份证号码得到以下信息:
1. 姓名:身份证号码中的第一个字符到第十七个字符表示身份证持有人的姓名,其中最后一位可能是数字或者字母X,表示身份证号码的校验位。
2. 出生日期:身份证号码中的第七个字符到第十四个字符表示身份证持有人的出生日期,格式为年月日。
3. 性别:身份证号码中的第十五个字符表示身份证持有人的性别,奇数表示男性,偶数表示女性。
4. 地址码:身份证号码中的第十七个字符到第十八个字符表示身份证持有人所在的行政区划代码。
5. 校验码:身份证号码中的最后一位是校验码,用于检验身份证号码的有效性。
在Python中,可以通过正则表达式和字符串切片等方式提取身份证号码中的各个信息。例如:
```python
import re
id_card = '110101199003076677'
# 提取姓名
name = id_card[0:6]
print('姓名:', name)
# 提取出生日期
birthday = id_card[6:14]
print('出生日期:', birthday)
# 提取性别
gender = int(id_card[16])
if gender % 2 == 0:
print('性别:女')
else:
print('性别:男')
# 提取地址码
address_code = id_card[17:19]
print('地址码:', address_code)
# 校验身份证号码的有效性
pattern = re.compile(r'^\d{17}[\dX]$')
if not pattern.match(id_card):
print('身份证号码格式错误!')
else:
# 计算校验码
factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
sum = 0
for i in range(17):
sum += int(id_card[i]) * factor[i]
if check_code[sum % 11] == id_card[17]:
print('身份证号码有效!')
else:
print('身份证号码无效!')
```
以上代码演示了如何从身份证号码中提取姓名、出生日期、性别和地址码,并校验身份证号码的有效性。
阅读全文