标签:lambda word except env child %s odi for match
""" 生成随机姓名、电话号码、身份证号、性别、应行卡号、邮箱 """ 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 ==‘10‘: 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 = ‘0‘ + str(month) if day < 10: day = ‘0‘ + 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 = ‘62‘ 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]
标签:lambda word except env child %s odi for match
原文地址:https://www.cnblogs.com/lxmtx/p/11840221.html