宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

本文将从多个方面介绍Python如何批量生成身份证号码,并给出详细的代码示例。

一、生成随机化的身份证号码

要生成一组随机化的身份证号码,需要使用Python中的随机函数。

import random

def generate_id():
    area_list = ["110000", "120000", "130000", "140000", "150000", "210000", "220000", "230000"]
    id_number = random.choice(area_list)
    id_number += str(random.randint(1950, 2021)).zfill(4)
    id_number += str(random.randint(1, 12)).zfill(2)
    id_number += str(random.randint(1, 28)).zfill(2)
    id_number += str(random.randint(100, 999)).zfill(3)
    id_number += str(random.randint(0, 9))
    return id_number

该函数将返回一组随机的身份证号码。

二、自定义生成特定区域的身份证号码

有时候我们需要指定生成的身份证号码属于哪个地区。例如,我们只需要生成北京市和天津市的身份证号码。

import random

def generate_id(area):
    area_dict = {"北京市": "110000", "天津市": "120000"}
    id_number = area_dict[area]
    id_number += str(random.randint(1950, 2021)).zfill(4)
    id_number += str(random.randint(1, 12)).zfill(2)
    id_number += str(random.randint(1, 28)).zfill(2)
    id_number += str(random.randint(100, 999)).zfill(3)
    id_number += str(random.randint(0, 9))
    return id_number

在调用该函数时,需要传入一个字符串参数,表示需要生成身份证号码的所在地区。例如,generate_id(“北京市”)将返回一个属于北京市的随机身份证号码。

三、生成指定数量的身份证号码

有时候我们需要一次性生成多个身份证号码。我们可以使用Python中的循环语句来实现。

import random

def generate_ids(num):
    area_list = ["110000", "120000", "130000", "140000", "150000", "210000", "220000", "230000"]
    id_list = []
    for i in range(num):
        id_number = random.choice(area_list)
        id_number += str(random.randint(1950, 2021)).zfill(4)
        id_number += str(random.randint(1, 12)).zfill(2)
        id_number += str(random.randint(1, 28)).zfill(2)
        id_number += str(random.randint(100, 999)).zfill(3)
        id_number += str(random.randint(0, 9))
        id_list.append(id_number)
    return id_list

该函数将返回一个长度为num的列表,包含num个随机生成的身份证号码。在调用该函数时,需要传入需要生成的身份证号码数量。

四、生成特定日期范围内的身份证号码

有时候我们需要生成的身份证号码日期范围不是随机的,我们需要调整生成的身份证号码的出生日期。我们可以设置参数来控制日期范围。

import random

def generate_id(start_date, end_date):
    area_list = ["110000", "120000", "130000", "140000", "150000", "210000", "220000", "230000"]
    begin_date = datetime.strptime(start_date, "%Y%m%d")
    end_date = datetime.strptime(end_date, "%Y%m%d")
    id_number = random.choice(area_list)
    id_number += str(random.randint(begin_date.year, end_date.year)).zfill(4)
    month = random.randint(1, 12)
    if begin_date.year == end_date.year:
        month_range = range(begin_date.month, end_date.month + 1)
        month = random.choice(month_range)
    elif begin_date.year < end_date.year:
        if begin_date.year == id_number[6:10]:
            month_range = range(begin_date.month, 13)
            month = random.choice(month_range)
        elif end_date.year == id_number[6:10]:
            month_range = range(1, end_date.month + 1)
            month = random.choice(month_range)
    day = random.randint(1, 28)
    if month in [1, 3, 5, 7, 8, 10, 12]:
        day = random.randint(1, 31)
    elif month == 2:
        day = random.randint(1, 28)
    else:
        day = random.randint(1, 30)
    id_number += str(month).zfill(2)
    id_number += str(day).zfill(2)
    id_number += str(random.randint(100, 999)).zfill(3)
    id_number += str(random.randint(0, 9))
    return id_number

该函数将返回一个出生日期在start_date和end_date之间的随机生成的身份证号码。需要注意的是,start_date和end_date需要以字符串形式传递,并且必须符合”yyyymmdd”的格式。