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
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!