利用Python编程提取身份证的信息

今天做一个正则表达式练习的时候,想到编一个小程序实现提取身份证的信息,例如从身份证信息提取隶属地区名,出生日期等。第二代身份证的位数为18位。

源码如下:

import re

# Sample 18-bit ID card number containing the birth date
id_card_number = "51142119991021155x"

# Define the regex pattern to extract the birth date
pattern = r'\d{4}(?:0[1-9]|1[0-2])(?:0[1-9]|[12][0-9]|3[01])'

# Search for the birth date in the ID card number
match = re.search(pattern, id_card_number)

# 在csdn搜到的文本信息,部分信息省略...
area_code = '''
110000 北京市       
 110101    东城区       
 110102    西城区       
 .....
 .....
 659006    铁门关市       
 659007    双河市       
 659008    可克达拉市       
 659009    昆玉市       
 659010    胡杨河市       
 710000 台湾省       
 810000 香港特别行政区       
 820000 澳门特别行政区 
'''
# 定义一个匹配区号和地区名的正则
pattern = re.compile('(\d+)\s+(\w+)')
# 将上面的字符串转成字典格式,键为区号,值为地区名
area_code_dict = dict(pattern.findall(area_code))


# 提取出生日期
if match:
    birth_date = match.group(0)
    print(f"出生日期: {birth_date}")
else:
    print("No birth date found in the ID card number.")

# 提取地区号
pattern1 = re.compile('^\d{6}')
match = pattern1.match(id_card_number)
if match:
    print('地区号为:', match.group(0))
    print('身份隶属于:',area_code_dict[match.group(0)])
else:
    print("No area code found in the ID card number.")

运行结果如下:

出生日期: 19991021
地区号为: 511421
身份隶属于: 仁寿县

以上的正则表达式通过[小蜜蜂AI][https://zglg.work]网站问答获取。

04-15 09:29