python字符串过滤性能比较5种方法
2017-06-22 14:32
791 查看
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
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- Java 5种字符串拼接方式性能比较
- Oracle数据库日期过滤方法性能比较
- c++,java,python 的字符串反转方法(回文数比较)
- Java 5种字符串拼接方式性能比较。
- 字符串反转-基于Python的6种方法比较(最全总结版本!)
- 再谈两种不同字符串比较方法的性能对比
- js去字符串前后空格5种实现方法及比较
- Java 字符串拼接 五种方法的性能比较分析
- 对python中两种列表元素去重函数性能的比较方法
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较
- Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法 .
- String类的split()方法与StringTokenizer方法对字符串分割并输出内容的性能比较
- Java各种字符串连接方法性能比较
- StringBuffer对象和传统的字符串连接方法性能测试比较
- Sql Server中三种字符串合并方法的性能比较
- python获取字母在字母表对应位置的几种方法及性能对比较
- Python字符串比较忽略大小写的方法