python字符串过滤性能比较5种方法
更新时间:2017年06月22日 14:32:15 投稿:lqh
这篇文章主要介绍了python字符串过滤性能比较5种方法的相关资料,需要的朋友可以参考下
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
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
巧妙使用Python装饰器处理if...elif...else
大家好,今天在 Github 阅读 EdgeDB[1] 的代码,发现它在处理大量if…elif…else的时候,巧妙地使用了装饰器,方法设计精巧,分享给大家一下,欢迎收藏学习,喜欢点赞支持2021-11-11关于tf.matmul() 和tf.multiply() 的区别说明
这篇文章主要介绍了关于tf.matmul() 和tf.multiply() 的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06通过selenium抓取某东的TT购买记录并分析趋势过程解析
这篇文章主要介绍了通过selenium抓取某东的TT购买记录并分析趋势过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-08-08
最新评论