python字符串过滤性能比较5种方法比较
总共比较5种方法。直接看代码:
import random import time import os import string base = string.digits+string.punctuation total = 100000 def loop(ss): """循环""" rt = '' for c in ss: if c in '0123456789': rt = rt + c return rt def regular(ss): """正则表达式""" import re rt = re.sub(r'\D','',ss) return rt def filter_mt(ss): """函数式""" return filter(lambda c:c.isdigit(),ss) def list_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([x for x in ss if isdigit(x)]) def str_tran(ss): """string.translate()""" table = string.maketrans('','') ss = ss.translate(table,string.punctuation) return ss if __name__ == '__main__': lst = [] for i in xrange(total): num = random.randrange(10,50) ss = '' for j in xrange(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
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。