本文将从多个方面介绍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”的格式。