Python新人,如何从很多身份号码中提取生日年月日?

要从很多身份号码中提取生日年月日,你可以使用 Python 的正则表达式(re 模块)来处理身份证号码,并提取出生日期。以下是一个示例代码,演示如何提取中国身份证号码中的出生日期:

示例代码

python
import re def extract_birthday(id_number): """ 从中国身份证号码中提取出生日期。 :param id_number: 身份证号码 :return: 出生日期(格式为 yyyy-mm-dd) """ # 正则表达式匹配身份证号码中的出生日期部分 pattern = r'(\d{6})(\d{8})' match = re.search(pattern, id_number) if match: # 提取年份、月份和日期 birth_date = match.group(2) year = birth_date[:4] month = birth_date[4:6] day = birth_date[6:8] return f"{year}-{month}-{day}" else: return None # 示例身份证号码 id_numbers = [ "110101199003078888", # 1990年3月7日 "310101198512100000", # 1985年12月10日 "440104197812305678" # 1978年12月30日 ] # 提取并打印所有身份证号码的出生日期 for id_number in id_numbers: birthday = extract_birthday(id_number) if birthday: print(f"身份证号码: {id_number}, 出生日期: {birthday}") else: print(f"身份证号码: {id_number}, 出生日期: 无法提取")

代码解析

  1. 正则表达式模式:

    • (\d{6}) 匹配身份证号码的前六位(地区码),
    • (\d{8}) 匹配身份证号码的出生日期部分(YYYYMMDD)。
  2. 提取出生日期:

    • 使用 re.search 查找匹配的子串。
    • 从匹配中提取出生日期的年月日部分,并格式化为 yyyy-mm-dd 格式。

其他注意事项

  • 身份证号格式: 这段代码假设身份证号格式为 15 位或 18 位。如果你处理的是 15 位身份证号码,可以先将其转换为 18 位格式。
  • 合法性检查: 代码未检查身份证号的合法性,仅提取出生日期。如果需要验证身份证号的合法性,请额外处理。
  • 生日范围: 确保提取的日期在有效范围内,避免无效的日期如 2023-02-30。

关键字

Python, 身份证号码, 出生日期, 正则表达式, re 模块, 提取信息, 格式化日期