身份证号码生成
Python 身份证号码生成
1、使用内置函数type(object)查看字符类型
len_l = randint(0, 3019)
print(len_l)
line = open("xingzhengquyu", encoding="utf-8").readlines()
print(line[len_l])
print(type('line[len_l]'))
结果:
2341
511011 东兴区
<class ‘str’>
2、获取字符串中的数字
t=re.findall(r"\d+\.?\d*",line[len_l])
3、zfill()日期位数不足,向左补齐
IDcard_dateyear=str(localtime(random_time).tm_year)
IDcard_datemonth=str(localtime(random_time).tm_mon)
if (len(IDcard_datemonth)==1):
IDcard_datemonth=IDcard_datemonth.zfill(2)
IDcard_dateday=str(localtime(random_time).tm_mday)
if (len(IDcard_dateday)==1):
IDcard_dateday = IDcard_dateday.zfill(2)
说明:
Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0。
zfill()方法语法:str.zfill(width)
参数width – 指定字符串的长度。原字符串右对齐,前面填充0。
返回指定长度的字符串
结果:
time.struct_time(tm_year=1999, tm_mon=6, tm_mday=11, tm_hour=13, tm_min=5, tm_sec=26, tm_wday=4, tm_yday=162, tm_isdst=0)
465
19990611465
4、从行政区域划分行里取行政编码(622924 广河县)
print(111, line[len_l].split(' ')[0])#以空格为界,分为两个list
print(112, line[len_l][:6]) #取前六个
5、split() 通过指定分隔符对字符串进行切片
文件中格式均为
110000 北京市
110101 东城区
110102 西城区
顾利用空格为界,切片
area=111, line[len_l].split(' ')[0])
生成身份证整段:
# coding=utf-8
from random import *
from time import *
import pandas as pd
import numpy as np
import re
import os, sys
from datetime import date, timedelta
# 获取行政区域
len_l = randint(0, 3019)#当前共行政区划分3019
line = open("xingzhengquyu", encoding="utf-8").readlines()#读取整行
print('表中随机一行的值:',line[len_l])
# print(111, line[len_l].split(' ')[0])#以空格为界,分为两个list
# print(112, line[len_l][:6]) #取前六个
# t=re.findall(r"\d+\.?\d*",line[len_l]) #正则表达式获取后,形式如:['530823'],还得再处理
IDcard_area=line[len_l][:6]
# 获取时间
date1=(1970,1,2,0,0,0,0,0,0)
time1=mktime(date1)
print(time1)
date2=(2019,6,4,0,0,0,0,0,0,)
time2=mktime(date2)
print(time2)
random_time =int(uniform(time1,time2))
print('打印随机时间戳',random_time)
print('转换格式后的值:',localtime(random_time))
IDcard_dateyear=str(localtime(random_time).tm_year)
IDcard_datemonth=str(localtime(random_time).tm_mon)
if (len(IDcard_datemonth)==1):
IDcard_datemonth=IDcard_datemonth.zfill(2) #不足两位就补齐
IDcard_dateday=str(localtime(random_time).tm_mday)
if (len(IDcard_dateday)==1):
IDcard_dateday = IDcard_dateday.zfill(2) #不足两位就补齐
#第15、16位数字表示:所在地的派出所的代码,第17位数字表示性别:奇数表示男性,偶数表示女性
IDcard_sex_police_station= str(randint(100, 999))
#前17位
IDcard=IDcard_area+IDcard_dateyear+IDcard_datemonth+IDcard_dateday+IDcard_sex_police_station
print('打印检查位之前(前17位)的值:',IDcard)
# 算出校验码,第十八位
i = 0
count = 0
weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 权重项
checkcode = {'0': '1', '1': '0', '2': 'X', '3': '9', '4': '8', '5': '7', '6': '6', '7': '5', '8': '5', '9': '3',
'10': '2'} # 校验码映射
for i in range(0, len(IDcard)):
count = count + int(IDcard[i]) * weight[i]
IDcard = IDcard + checkcode[str(count % 11)] # 算出校验码
print('生成的身份证信息为:',IDcard) #实际的身份证信息
发现日期生成有一种更加简单的方式,这种方式,不需要再年月日拼接
print(strftime("%Y%m%d", localtime(random_time)))
from time import *
# 获取时间
date1=(1970,1,2,0,0,0,0,0,0)
time1=mktime(date1)
print(time1)
date2=(2019,6,4,0,0,0,0,0,0,)
time2=mktime(date2)
print(time2)
random_time =int(uniform(time1,time2))
print('打印随机时间戳',random_time)
print('转换格式后的值:',localtime(random_time))
print(strftime("%Y%m%d", localtime(random_time)))
相关阅读
代码如下: import requests from lxml import etree import pymysql from pyecharts import Geo import numpy as np earthquake
【商家微信号:21585 】专业从事信用消费额度提现业务4年之久;主要操作:蚂蚁花呗套现、京东白条套现、苏宁任性付套现等信用额度套
随机函数用于产生伪随机数,需要头文件stdlib.h。int rand()可以产生一个[0,RAND_MAX]范围内的伪随机数,其中RAND_MAX是一个系统定义
【黑/客/徽/信/10484866】专业盗取微信密码,开房查询,通话记录查询,查询微信记录!随着互联网在国内的大面积普及,在意识到了互联网
知识点: 1、字符数组 先以字符串的形式输入,再将字符串转化成字符数组 tocharArray( )函数:将字符串对象中的字符转换为一个字符数