必威体育Betway必威体育官网
当前位置:首页 > IT技术

身份证号码生成

时间:2019-10-11 15:14:40来源:IT技术作者:seo实验室小编阅读:57次「手机版」
 

身份证号码生成

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年之久;主要操作:蚂蚁花呗套现、京东白条套现、苏宁任性付套现等信用额度套

生成随机数(C语言,任意随机)

随机函数用于产生伪随机数,需要头文件stdlib.h。int rand()可以产生一个[0,RAND_MAX]范围内的伪随机数,其中RAND_MAX是一个系统定义

两个人开过房能查出来吗?身份证能查同住人吗?

【黑/客/徽/信/10484866】专业盗取微信密码,开房查询,通话记录查询,查询微信记录!随着互联网在国内的大面积普及,在意识到了互联网

CSP——ISBN号码

知识点: 1、字符数组 先以字符串的形式输入,再将字符串转化成字符数组 tocharArray( )函数:将字符串对象中的字符转换为一个字符数

分享到:

栏目导航

推荐阅读

热门阅读