4.编写一个函数,提取有效的 18 位身份证号码,从中提取出生日期,并以“出生日期是****年**月**日-年龄为**岁”的格式输出。
时间: 2023-12-30 19:24:11 浏览: 121
可以使用正则表达式来提取有效的18位身份证号码,并通过字符串切片来提取出生日期。然后,可以使用datetime模块来计算年龄并格式化输出。
以下是一个示例函数的实现:
```python
import re
from datetime import datetime
def extract_birthdate(id_number):
# 使用正则表达式提取有效的18位身份证号码
pattern = r'^\d{17}(\d|X|x)$'
match = re.match(pattern, id_number)
if not match:
return "无效的身份证号码"
# 提取出生日期
birthdate = id_number[6:14]
try:
# 将出生日期转换为datetime对象
birthdate = datetime.strptime(birthdate, "%Y%m%d")
except ValueError:
return "无效的出生日期"
# 计算年龄
today = datetime.today()
age = today.year - birthdate.year
if today.month < birthdate.month or (today.month == birthdate.month and today.day < birthdate.day):
age -= 1
# 格式化输出
output = "出生日期是{}年{}月{}日-年龄为{}岁".format(birthdate.year, birthdate.month, birthdate.day, age)
return output
```
你可以调用这个函数并传入一个有效的18位身份证号码来测试它。例如:
```python
id_number = "110101199001011234"
result = extract_birthdate(id_number)
print(result)
```
输出结果应该是:
```
出生日期是1990年01月01日-年龄为31岁
```
阅读全文