以下是一个简单的示例代码,仅供参考:

import re

# 定义地级市列表,可以根据需要添加或修改
cities = {
    '110000': '北京市',
    '120000': '天津市',
    '310000': '上海市',
    '500000': '重庆市',
    '130100': '石家庄市',
    '130200': '唐山市',
    '130300': '秦皇岛市',
    # ...
}

# 正则表达式模式,用于匹配身份证号码
pattern = re.compile(r'^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})(\d|x|X)$')

def validate_id_card(id_card):
    # 匹配身份证号码
    match = pattern.match(id_card)
    if not match:
        return False

    # 获取各个字段值
    province_code = match.group(1)
    city_code = province_code[:4] + '00'
    year = int(match.group(2))
    month = int(match.group(3))
    day = int(match.group(4))

    # 检查日期是否合法
    if not (1900 <= year <= 2100 and 1 <= month <= 12 and 1 <= day <= 31):
        return False

    # 检查校验码是否正确
    factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
    checksum = sum(int(c) * f for c, f in zip(id_card[:-1], factors))
    checksum %= 11
    checksum = '10x' if checksum == 10 else str(checksum)
    if checksum != id_card[-1].lower():
        return False

    # 判断所在地级市
    if city_code in cities:
        return cities[city_code]
    else:
        return '未知城市'

# 测试代码
id_card = input('请输入身份证号码:')
city = validate_id_card(id_card)
print('该身份证号码所在城市为:', city)

使用方法:

  1. 在命令行或终端中运行 Python 解释器。
  2. 将以上代码复制粘贴到解释器中。
  3. 输入一个身份证号码进行测试。

注意:这只是一个简单的示例代码,可能存在一些局限性和不足之处,需要根据实际情况进行修改和完善。例如,不同地区的身份证号码格式可能会有所不同,需要适当调整正则表达式模式;地级市列表也可能需要根据实际情况进行更新。


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

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