用python写程序输入某人身份证号码,分别输出该人的出生年月日、性别、地区(11...:北京,2101...辽宁省沈阳市)等信息。
时间: 2024-09-15 16:11:28 浏览: 166
浅谈Python中re.match()和re.search()的使用及区别
要使用Python编写一个程序来处理身份证号码并提取出生年月日、性别和地区的相关信息,首先需要了解中国大陆的身份证号码的结构。一般而言,第二代身份证号码为18位,其中包含了这些信息:
1. 前6位为地址码,代表了身份证持有者的籍贯地区。
2. 接下来的8位为出生日期码,格式为YYYYMMDD。
3. 然后是一位顺序码,奇数分配给男性,偶数分配给女性。
4. 最后一位为校验码。
下面是一个简单的Python程序示例,用于提取和显示上述信息:
```python
import datetime
def parse_id_card(id_card):
if len(id_card) != 18 or not id_card.isdigit():
return "身份证号码不正确"
address_code = id_card[:6]
birth_code = id_card[6:14]
sequence_code = id_card[14:17]
check_code = id_card[17]
# 将出生年月日字符串转换为datetime对象
birth_date = datetime.datetime.strptime(birth_code, '%Y%m%d').date()
# 判断性别,奇数为男,偶数为女
gender = '男' if int(sequence_code) % 2 != 0 else '女'
# 地区编码转换,需要对照身份证地区编码表
# 这里只提供了一个简化的例子,具体实现需要完整的编码对照表
area_code_dict = {
'110000': '北京',
'210100': '辽宁省沈阳市',
# ... 更多地区编码映射
}
area = area_code_dict.get(address_code, "未知地区")
return {
'出生年月日': birth_date.strftime('%Y-%m-%d'),
'性别': gender,
'地区': area,
}
# 测试代码
id_card_number = input("请输入您的身份证号码:")
info = parse_id_card(id_card_number)
if isinstance(info, dict):
print("出生年月日:", info['出生年月日'])
print("性别:", info['性别'])
print("地区:", info['地区'])
else:
print(info)
```
这个程序首先定义了一个解析身份证号码的函数`parse_id_card`,它接收身份证号码作为参数,并通过一系列步骤提取出生日期、性别和地区的相关信息。然后程序输出这些信息。
请注意,这个程序并没有实现完整的地区编码对照,实际应用中需要一个完整的地区编码表。另外,校验码的检查在此示例中并未实现,但在真实场景中应当添加以确保身份证号码的正确性。
阅读全文