今天做一个正则表达式练习的时候,想到编一个小程序实现提取身份证的信息,例如从身份证信息提取隶属地区名,出生日期等。第二代身份证的位数为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 东城区
....
140728 平遥县
140729 灵石县
140781 介休市
....
141000 临汾市
141002 尧都区
...
500155 梁平区
511421 仁寿县
511423 洪雅县
....
640522 海原县
.....
....
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
身份隶属于: 仁寿县
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】