python字符串过滤性能比较5种方法
python字符串过滤性能比较5种方法比较
总共比较5种方法。直接看代码:
importrandom importtime importos importstring base=string.digits+string.punctuation total=100000 defloop(ss): """循环""" rt='' forcinss: ifcin'0123456789': rt=rt+c returnrt defregular(ss): """正则表达式""" importre rt=re.sub(r'\D','',ss) returnrt deffilter_mt(ss): """函数式""" returnfilter(lambdac:c.isdigit(),ss) deflist_com(ss): """列表生成式""" isdigit={'0':1,'1':1,'2':1,'3':1,'4':1, '5':1,'6':1,'7':1,'8':1,'9':1}.has_key return''.join([xforxinssifisdigit(x)]) defstr_tran(ss): """string.translate()""" table=string.maketrans('','') ss=ss.translate(table,string.punctuation) returnss if__name__=='__main__': lst=[] foriinxrange(total): num=random.randrange(10,50) ss='' forjinxrange(num): ss=ss+random.choice(base) lst.append(ss) s1=time.time() map(loop,lst) print"loop:",time.time()-s1 print'*'*20 s1=time.time() map(regular,lst) print"regular:",time.time()-s1 print'*'*20 s1=time.time() map(str_tran,lst) print"str_tran:",time.time()-s1 print'*'*20 s1=time.time() map(filter_mt,lst) print"filter_mt:",time.time()-s1 print'*'*20 s1=time.time() map(list_com,lst) print"list_com:",time.time()-s1
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!