python习题校验身份证号码并输出个人信息
时间: 2024-09-11 18:05:03 浏览: 145
要校验Python中身份证号码并输出个人信息,可以使用正则表达式来匹配身份证号码的格式,然后进行一些基本的校验,例如长度检查、校验码计算等。以下是一个简单的例子,用于校验18位身份证号码,并输出校验结果和个人信息(这里仅以身份证号码中的出生年月日为例)。
```python
import re
def check_id_card(id_card):
# 中国大陆的身份证号码为18位,最后一位可能是数字或字母X
pattern = re.compile(r'^\d{17}[\dXx]$')
if not pattern.match(id_card):
return "身份证号码格式不正确"
# 进行校验码的校验
check_code_dict = {'0': '1', '1': '0', '2': 'X', '3': '9', '4': '8', '5': '7', '6': '6', '7': '5', '8': '4', '9': '3', '10': '2'}
weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
id_card_list = list(id_card)
sum = 0
for i in range(17):
sum += int(id_card_list[i]) * weight[i]
check_code = check_code_dict[str(sum % 11)]
if id_card_list[17].upper() != check_code:
return "校验码不正确"
# 提取个人信息
province = "身份证前两位编码未使用"
birth_date = id_card[6:14] # 出生年月日
gender_code = id_card[16]
if int(gender_code) % 2 == 0:
gender = "女"
else:
gender = "男"
info = f"省份:{province}, 出生日期:{birth_date}, 性别:{gender}"
return info
# 测试
id_card_number = "11010519880605001X" # 示例身份证号码
result = check_id_card(id_card_number)
if isinstance(result, str):
print(result)
else:
print(f"身份证号码校验通过,个人信息:{result}")
```
请注意,上述代码仅用于教学示例,实际应用中需要使用更严谨的校验方法,并考虑到身份证号码的隐私保护。
阅读全文
相关推荐


















