生成身份证号
最编程
2024-05-05 07:28:28
...
生成身份证号
import csv
import datetime
import random
import re
import pandas as pd
import radar
card_arr = {}
card_arr["110100"] = "北京市市辖区"
card_arr["710000"] = "*省"
card_arr["810000"] = "香港特别行政区"
card_arr["820000"] = "澳门特别行政区"
# 随机生成每个地区的身份证号,每个地区一个
def random_id():
data_list = []
for i, j in card_arr.items():
data = {}
# 生成随机生日
ymd = radar.random_date(datetime.date(year=1920, month=1, day=1),
datetime.date(year=2022, month=10, day=1)).strftime("%Y%m%d")
# 生成该地区同年同月同日出生人数的顺序数
xxx = str(random.randint(0, 200)).zfill(3)
# 得到17位身份证号
id_17 = i + ymd + xxx
# 计算身份证号的校验位,保证身份证号有效
a = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
valide = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
s = 0
for i in range(len(id_17)):
s += int(id_17[i]) * a[i]
mod = s % 11
id = id_17 + str(valide[mod])
# print(id)
y = id[6:10]
m = id[10:12]
d = id[12:14]
s = id[16:17]
sex = '男'
shengri = y + '年' + m + '月' + d + '日'
if int(s) % 2 == 0:
sex = '女'
xingbie = sex
data['card'] = id
data['area'] = j
data['birthday'] = shengri
data['sex'] = xingbie
data_list.append(data)
save(data_list)
print('save is done!')
# 将数据存为csv文件
def save(data):
header = ['card', 'area', 'birthday', 'sex']
with open('./id_card.csv', 'w', encoding='utf8', newline='') as f:
# 写
writer = csv.DictWriter(f, header)
# 写入标题
writer.writeheader()
# 将数据写入
writer.writerows(data)
# 给csv文件添加id,和star_id列,便于配置实体
def add_field_id():
ngData = pd.read_csv('./id_card.csv')
ngList = []
for index, row in ngData.iterrows():
ngList.append(index + 1)
ngData.insert(loc=0, column='star_id', value=ngList)
ngData.insert(loc=0, column='id', value=ngList)
ngData.to_csv('./id_card_new.csv', index=False)
if __name__ == '__main__':
random_id()
add_field_id()
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者