以下是一个简单的身份证检验和归属地判断的Python代码示例:

import re

# 身份证号码正则表达式
ID_PATTERN = re.compile(r'^[1-9]\d{5}(18|19|20)\d{2}(0\d|1[0-2])([0-2]\d|3[0-1])\d{3}[\dX]$')

# 广东省各地级市区划代码前6位
CITY_CODES = {
    '广州市': ['4401', '440103', '440104', '440105', '440106', '440111', '440112', '440113', '440114', '440115', '440117'],
    '韶关市': ['4402', '440203', '440204', '440205', '440222', '440224', '440229', '440232', '440233', '440281', '440282'],
    '深圳市': ['4403', '440303', '440304', '440305', '440306', '440307', '440308', '440309', '440310', '440311', '440312', '440313'],
    '珠海市': ['4404', '440402', '440403', '440404', '440507', '440511', '440512', '440513'],
    '汕头市': ['4405', '440507', '440511', '440512', '440513', '440514', '440515', '440523', '440524', '440528', '440982'],
    '佛山市': ['4406', '440604', '440605', '440606', '440607', '440608', '440609', '440703', '440704', '440705'],
    '江门市': ['4407', '440703', '440704', '440705', '440781', '440783', '440784', '440785'],
    '湛江市': ['4408', '440802', '440803', '440804', '440811', '440823', '440825', '440881', '440882', '440883'],
    '茂名市': ['4409', '440902', '440904', '440981', '440982', '440983'],
    '肇庆市': ['4412', '441202', '441203', '441204', '441223', '441224', '441225', '441226', '441283', '441284'],
    '惠州市': ['4413', '441302', '441303', '441322', '441323', '441324', '441381'],
    '梅州市': ['4414', '441402', '441403', '441422', '441423', '441424', '441426', '441427', '441481'],
    '汕尾市': ['4415', '441502', '441521', '441523', '441581'],
    '河源市': ['4416', '441602', '441621', '441622', '441623', '441624', '441625', '441626'],
    '阳江市': ['4417', '441702', '441704', '441721', '441781'],
    '清远市': ['4418', '441802', '441803', '441821', '441823', '441825', '441826', '441881', '441882'],
    '东莞市': ['4419'],
    '中山市': ['4420'],
    '潮州市': ['4451', '445102', '445103', '445122', '445202', '445203', '445222', '445281'],
    '揭阳市': ['4452', '445202', '445203', '445222', '445224', '445281', '445284'],
    '云浮市': ['4453', '445302', '445303', '445321', '445322', '445381']
}

def validate_id_card(id_card):
    """
    验证身份证号码是否合法
    :param id_card: 身份证号码
    :return: True或False
    """
    if not id_card:
        return False
    if not ID_PATTERN.match(id_card):
        return False
    # TODO: 进一步验证身份证号码是否正确
    return True

def get_city_from_id_card(id_card):
    """
    根据身份证号码获取所属地级市
    :param id_card: 身份证号码
    :return: 地级市名称或None
    """
    if not validate_id_card(id_card):
        return None
    city_code = id_card[:6]
    for city, codes in CITY_CODES.items():
        if city_code in codes:
            return city
    return None

# 测试
id_card = '440106199001011234'
city = get_city_from_id_card(id_card)
print(city)  # 广州市

注意,以上代码只是一个简单示例,实际应用中需要根据具体情况进行修改和完善。例如,需要进一步验证身份证号码是否正确、处理不同格式的输入等。


原文地址: https://www.cveoy.top/t/topic/KNY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录