python实现个人信息随机生成
"""
生成随机姓名、电话号码、身份证号、性别、应行卡号、邮箱
"""
import random
from firstname import first_name
from langconv import *
from province_id import province_id
from phone_number import phone_number
# from langconv import Converter # 随机生成姓名
def get_name():
name_code = ''
# 在百家姓列表里面随便选择一个姓
name_code+=random.choice(first_name)
ran_num = random.randint(0,1)
# 为0生成的名字是两个字,为1生成的名字是一个字
if ran_num ==0:
for i in range(2):
# 从十进制汉字编码随机选取一个
ran = random.randint(19968,40869)
# 将其转换为汉字
ran = chr(ran)
name_code+=ran
else:
# 从十进制汉字编码随机选取一个
ran = random.randint(19968, 40869)
# 将其转换为汉字
ran = chr(ran)
name_code += ran
# 将name_code里面的繁体字转换为简体字
name_code = Converter('zh-hans').convert(name_code)
# 编码
name_code.encode('utf-8')
return name_code # 随机生成身份证号
def get_idnum():
id_num = ''
# 随机选择地址码
id_num+=str(random.choice(province_id))
# 随机生成4-6位地址码
for i in range(4):
ran_num = str(random.randint(0,9))
id_num+=ran_num
b = get_birthday()
id_num+=b
# 生成15、16位顺序号
num = ''
for i in range(2):
num += str(random.randint(0,9))
id_num+=num
# 通过性别判断生成第十七位数字 男单 女双
s = get_sex()
print("性别:",s)
if s =='男':
# 生成奇数
seventeen_num = random.randrange(1,9,2)
else:
seventeen_num = random.randrange(2,9,2)
id_num+=str(seventeen_num)
eighteen_num = str(random.randint(1,10))
if eighteen_num =='':
eighteen_num = 'X'
id_num+=eighteen_num
return id_num # 随机生成出生日期
def get_birthday():
# 随机生成年月日
year = random.randint(1960,2000)
month = random.randint(1,12)
# 判断每个月有多少天随机生成日
if year%4 ==0:
if month in (1,3,5,7,8,10,12):
day = random.randint(1,31)
elif month in (4,6,9,11):
day = random.randint(1,30)
else:
day = random.randint(1,29)
else:
if month in (1,3,5,7,8,10,12):
day = random.randint(1,31)
elif month in (4,6,9,11):
day = random.randint(1,30)
else:
day = random.randint(1,28)
# 小于10的月份前面加0
if month < 10:
month = '' + str(month)
if day < 10:
day = '' + str(day)
birthday = str(year)+str(month)+str(day)
return birthday # 匿名函数
get_sex = lambda :random.choice(['男','女']) # 随机生成手机号
def get_tel():
tel = ''
tel+=str(random.choice(phone_number))
ran = ''
for i in range(8):
ran += str(random.randint(0,9))
tel +=ran
return tel # 随机生成银行卡号
def get_card_id():
card_id = ''
for i in range(17):
ran = str(random.randint(0,9))
card_id += ran
return card_id # 随机生成邮箱
def get_email():
email_suf = random.choice(['@163.com','@qq.com','@126.com','@sina.com','@sina.cn','@soho.com','@yeah.com'])
phone = get_tel()
email = phone + email_suf
print("手机号:",phone)
return email x = get_name()
print("姓名:",x)
y = get_idnum()
print("身份证号:",y)
z = get_email()
print("邮箱:",z)
w = get_card_id()
print("银行卡号:",w)
firstname.py
"""
百家姓列表
"""
first_name = ['赵' ,'钱', '孙','李','周','吴','郑','王','冯','陈','褚','卫','蒋',
'沈','韩','杨','朱','秦','尤','许','何','吕','施','张','孔','曹'
,'严','华','金','魏','陶','姜','戚','谢','邹','喻','柏','水','窦','章','云','苏',
'潘','葛','奚','范','彭','郎','鲁','韦','昌','马','苗','凤','花','方','俞','任','袁','柳',
'酆','鲍','史','唐','费','廉','岑','薛','雷','贺','倪','汤','滕','殷','罗','毕','郝','邬',
'安','常','乐','于','时','傅','皮','卞','齐','康','伍','余','元','卜','顾','孟','平','黄',
'和','穆','萧','尹','姚','邵','湛','汪','祁','毛','禹','狄','米','贝','明','臧','计','伏',
'成','戴','谈','宋','茅','庞','熊','纪','舒','屈','项','祝','董','粱','杜','阮','蓝','闵',
'席','季','麻','强','贾','路','娄','危','江','童','颜','郭','梅','盛','林','刁','钟','徐',
'邱','骆','高','夏','蔡','田','樊','胡','凌','霍','虞','万','支','柯','昝','管','卢','莫',
'经','房','裘','缪','干','解','应','宗','丁','宣','贲','邓','郁','单','杭','洪','包','诸',
'左','石','崔','吉','钮','龚','程','嵇','邢','滑','裴','陆','荣','翁','荀','羊','於','惠',
'甄','麴','家','封','芮','羿','储','靳','汲','邴','糜','松','井','段','富','巫','乌','焦',
'巴','弓','牧','隗','山','谷','车','侯','宓','蓬','全','郗','班','仰','秋','仲','伊','宫',
'宁','仇','栾','暴','甘','钭','厉','戎','祖','武','符','刘','景','詹','束','龙','叶','幸',
'司','韶','郜','黎','蓟','薄','印','宿','白','怀','蒲','邰','从','鄂','索','咸','籍','赖',
'卓','蔺','屠','蒙','池','乔','阴','欎','胥','能','苍','双','闻','莘','党','翟','谭','贡',
'劳','逄','姬','申','扶','堵','冉','宰','郦','雍','舄','璩','桑','桂','濮','牛','寿','通',
'边','扈','燕','冀','郏','浦','尚','农','温','别','庄','晏','柴','瞿','阎','充','慕','连',
'茹','习','宦','艾','鱼','容','向','古','易','慎','戈','廖','庾','终','暨','居','衡','步',
'都','耿','满','弘','匡','国','文','寇','广','禄','阙','东','殴','殳','沃','利','蔚','越',
'夔','隆','师','巩','厍','聂','晁','勾','敖','融','冷','訾','辛','阚','那','简','饶','空',
'曾','毋','沙','乜','养','鞠','须','丰','巢','关','蒯','相','查','後','荆','红','游','竺',
'权','逯','盖','益','桓','公','万俟','司马','上官','欧阳','夏侯','诸葛','闻人','东方','赫连',
'皇甫','尉迟','公羊','澹台','公冶','宗政','濮阳','淳于','单于','太叔','申屠','公孙','仲孙',
'轩辕','令狐','钟离','宇文','长孙','慕容','鲜于','闾丘','司徒','司空','亓官','司寇','仉','督',
'子车','颛孙','端木','巫马','公西','漆雕','乐正','壤驷','公良','拓跋','夹谷','宰父','谷梁','晋',
'楚','闫','法','汝','鄢','涂','钦','段干','百里','东郭','南门','呼延','归','海','羊舌','微生',
'岳','帅','缑','亢','况','后','有','琴','梁丘','左丘','东门','西门','商','牟','佘','佴','伯',
'赏','南宫','墨','哈','谯','笪','年','爱','阳','佟','言','福']
langconv.py #!/usr/bin/env python
# -*- coding: utf-8 -*- from copy import deepcopy
import re try:
import psyco
psyco.full()
except:
pass try:
from zh_wiki import zh2Hant, zh2Hans
except ImportError:
from zhtools.zh_wiki import zh2Hant, zh2Hans import sys
py3k = sys.version_info >= (3, 0, 0) if py3k:
UEMPTY = ''
else:
_zh2Hant, _zh2Hans = {}, {}
for old, new in ((zh2Hant, _zh2Hant), (zh2Hans, _zh2Hans)):
for k, v in old.items():
new[k.decode('utf8')] = v.decode('utf8')
zh2Hant = _zh2Hant
zh2Hans = _zh2Hans
UEMPTY = ''.decode('utf8') # states
(START, END, FAIL, WAIT_TAIL) = list(range(4))
# conditions
(TAIL, ERROR, MATCHED_SWITCH, UNMATCHED_SWITCH, CONNECTOR) = list(range(5)) MAPS = {} class Node(object):
def __init__(self, from_word, to_word=None, is_tail=True,
have_child=False):
self.from_word = from_word
if to_word is None:
self.to_word = from_word
self.data = (is_tail, have_child, from_word)
self.is_original = True
else:
self.to_word = to_word or from_word
self.data = (is_tail, have_child, to_word)
self.is_original = False
self.is_tail = is_tail
self.have_child = have_child def is_original_long_word(self):
return self.is_original and len(self.from_word)>1 def is_follow(self, chars):
return chars != self.from_word[:-1] def __str__(self):
return '<Node, %s, %s, %s, %s>' % (repr(self.from_word),
repr(self.to_word), self.is_tail, self.have_child) __repr__ = __str__ class ConvertMap(object):
def __init__(self, name, mapping=None):
self.name = name
self._map = {}
if mapping:
self.set_convert_map(mapping) def set_convert_map(self, mapping):
convert_map = {}
have_child = {}
max_key_length = 0
for key in sorted(mapping.keys()):
if len(key)>1:
for i in range(1, len(key)):
parent_key = key[:i]
have_child[parent_key] = True
have_child[key] = False
max_key_length = max(max_key_length, len(key))
for key in sorted(have_child.keys()):
convert_map[key] = (key in mapping, have_child[key],
mapping.get(key, UEMPTY))
self._map = convert_map
self.max_key_length = max_key_length def __getitem__(self, k):
try:
is_tail, have_child, to_word = self._map[k]
return Node(k, to_word, is_tail, have_child)
except:
return Node(k) def __contains__(self, k):
return k in self._map def __len__(self):
return len(self._map) class StatesMachineException(Exception): pass class StatesMachine(object):
def __init__(self):
self.state = START
self.final = UEMPTY
self.len = 0
self.pool = UEMPTY def clone(self, pool):
new = deepcopy(self)
new.state = WAIT_TAIL
new.pool = pool
return new def feed(self, char, map):
node = map[self.pool+char] if node.have_child:
if node.is_tail:
if node.is_original:
cond = UNMATCHED_SWITCH
else:
cond = MATCHED_SWITCH
else:
cond = CONNECTOR
else:
if node.is_tail:
cond = TAIL
else:
cond = ERROR new = None
if cond == ERROR:
self.state = FAIL
elif cond == TAIL:
if self.state == WAIT_TAIL and node.is_original_long_word():
self.state = FAIL
else:
self.final += node.to_word
self.len += 1
self.pool = UEMPTY
self.state = END
elif self.state == START or self.state == WAIT_TAIL:
if cond == MATCHED_SWITCH:
new = self.clone(node.from_word)
self.final += node.to_word
self.len += 1
self.state = END
self.pool = UEMPTY
elif cond == UNMATCHED_SWITCH or cond == CONNECTOR:
if self.state == START:
new = self.clone(node.from_word)
self.final += node.to_word
self.len += 1
self.state = END
else:
if node.is_follow(self.pool):
self.state = FAIL
else:
self.pool = node.from_word
elif self.state == END:
# END is a new START
self.state = START
new = self.feed(char, map)
elif self.state == FAIL:
raise StatesMachineException('Translate States Machine '
'have error with input data %s' % node)
return new def __len__(self):
return self.len + 1 def __str__(self):
return '<StatesMachine %s, pool: "%s", state: %s, final: %s>' % (
id(self), self.pool, self.state, self.final)
__repr__ = __str__ class Converter(object):
def __init__(self, to_encoding):
self.to_encoding = to_encoding
self.map = MAPS[to_encoding]
self.start() def feed(self, char):
branches = []
for fsm in self.machines:
new = fsm.feed(char, self.map)
if new:
branches.append(new)
if branches:
self.machines.extend(branches)
self.machines = [fsm for fsm in self.machines if fsm.state != FAIL]
all_ok = True
for fsm in self.machines:
if fsm.state != END:
all_ok = False
if all_ok:
self._clean()
return self.get_result() def _clean(self):
if len(self.machines):
self.machines.sort(key=lambda x: len(x))
# self.machines.sort(cmp=lambda x,y: cmp(len(x), len(y)))
self.final += self.machines[0].final
self.machines = [StatesMachine()] def start(self):
self.machines = [StatesMachine()]
self.final = UEMPTY def end(self):
self.machines = [fsm for fsm in self.machines
if fsm.state == FAIL or fsm.state == END]
self._clean() def convert(self, string):
self.start()
for char in string:
self.feed(char)
self.end()
return self.get_result() def get_result(self):
return self.final def registery(name, mapping):
global MAPS
MAPS[name] = ConvertMap(name, mapping) registery('zh-hant', zh2Hant)
registery('zh-hans', zh2Hans)
del zh2Hant, zh2Hans def run():
import sys
from optparse import OptionParser
parser = OptionParser()
parser.add_option('-e', type='string', dest='encoding',
help='encoding')
parser.add_option('-f', type='string', dest='file_in',
help='input file (- for stdin)')
parser.add_option('-t', type='string', dest='file_out',
help='output file')
(options, args) = parser.parse_args()
if not options.encoding:
parser.error('encoding must be set')
if options.file_in:
if options.file_in == '-':
file_in = sys.stdin
else:
file_in = open(options.file_in)
else:
file_in = sys.stdin
if options.file_out:
if options.file_out == '-':
file_out = sys.stdout
else:
file_out = open(options.file_out, 'wb')
else:
file_out = sys.stdout c = Converter(options.encoding)
for line in file_in:
# print >> file_out, c.convert(line.rstrip('\n').decode(
file_out.write(c.convert(line.rstrip('\n').decode(
'utf8')).encode('utf8')) if __name__ == '__main__':
run()
province_id.py """
各身份前两位地址码
"""
province_id = [11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,
50,51,52,53,54,61,62,63,65,65,81,82,83]
phone_number.py # 手机号开头
phone_number = [139,138,137,136,135,134,159,158,15,150,151,152,188,
130,131,132,156,155,133,153,189]
python实现个人信息随机生成的更多相关文章
- python练习册 0002随机生成验证
这个题需要用到random库的方法,不用就会忘,暂把random库的常用方法贴出来 import random import string # 随机整数 # randint(a, b),生成a~b之间 ...
- python随机生成个人信息
python随机生成个人信息 #!/usr/bin/env python3 # -*- coding:utf-8 -*- import sys import random class Personal ...
- Python:随机生成测试数据的模块--faker的基本使用
本文内容: faker的介绍 faker的使用 小例子:生成随机的数据表信息 首发日期:2018-06-15 faker介绍: faker是python的一个第三方模块,是一个github上的开源项目 ...
- Python随机生成验证码的两种方法
Python随机生成验证码的方法有很多,今天给大家列举两种,大家也可以在这个基础上进行改造,设计出适合自己的验证码方法方法一:利用range Python随机生成验证码的方法有很多,今天给大家列举两种 ...
- 用python随机生成数据,再插入到postgresql中
用python随机生成学生姓名,三科成绩和班级数据,再插入到postgresql中. 模块用psycopg2 random import random import psycopg2 fname=[' ...
- Python 项目实践二(生成数据)第二篇之随机漫步
接着上节继续学习,在本节中,我们将使用Python来生成随机漫步数据,再使用matplotlib以引人瞩目的方式将这些数据呈现出来.随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向 ...
- PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- python 几种方法实现随机生成8位同时包含数字、大写字符、小写字符密码的小程序
python 实现随机生成包8位包含大写字母.小写字母和数字的密码的程序.要求:1用户输入多少次就生成多少条密码,2要求密码必须同时包含大写字母.小写字母和数字,长度8位,不能重复代码如下: impo ...
- python随机生成手机号码
一句话生成电话号码random.choice(['139','188','185','136','158','151'])+"".join(random.choice(" ...
随机推荐
- sychronized和lock和区别
syschronized和lock的区别 synchronized的锁可重入.不可中断.非公平,而Lock锁可重入.可中断.可公平.绑定多个Condition.(两者皆可重入)synchronized ...
- 简单模拟B1011
#include<iostream> using namespace std; int main() { int n; long long a,b,c; cin >> n; ; ...
- pycharm2018专业版
https://blog.csdn.net/moshanghuali/article/details/94396935 1 下载Pycharm专业版2018.3.1许多人直接在官网直接下载,默认的都是 ...
- 洛谷 P1341 无序字母对(欧拉回路)
题目传送门 解题思路: 一道欧拉回路的模板题,详细定理见大佬博客,任意门 AC代码: #include<cstdio> #include<iostream> using nam ...
- 18 11 05 继续补齐对python中的class不熟悉的地方 和 pygame 精灵
---恢复内容开始--- class game : #历史最高分----- 是定义类的属性 top_score =0 def __init__(self, player_name) : #是定义的实例 ...
- liunx搭建配置
预安装准备工具 yum -y install gcc gcc-c++ wget cmake 安装 软件存放目录: /lnmp/ 软件安装目录: /usr/local/ 1.下载安装PCRE wget ...
- 单机版solr的搭建
1.1. Solr的环境 Solr是java开发. 需要安装jdk. 安装环境Linux. 需要安装Tomcat. 1.2. 搭建步骤 第一步:把solr 的压缩包上传到Linux系统 第二步:解压s ...
- uni-app: 如何实现增量更新功能?
都知道,很多APP都有增量更新功能,Uni APP也是在今年初,推出了增量更新功能,今天我们就来学习一波. 当然,很多应用市场为了防止开发者不经市场审核许可,给用户提供违法内容,对增量更新大多持排斥态 ...
- MySQL和Java数据类型对照表
Java MySQL数据类型对照 类型名称 显示长度 数据库类型 JAVA类型 JDBC类型索引(int) 描述 VARCHAR L+N VARCHAR java.lang.S ...
- linux 查看链接库的版本
我们编译可执行文件的时候,会链接各种依赖库, 但是怎么知道依赖库的版本正确呢? 下面有几种办法: ldd 这是比较差的,因为打印结果更与位置相关 dpkg -l | grep libprotobuf ...