python字符串过滤性能比较5种方法


Posted in Python onJune 22, 2017

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 相关文章推荐
利用Python的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
django foreignkey(外键)的实现
Jul 29 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
matplotlib之pyplot模块之标题(title()和suptitle())
Feb 22 Python
编写python程序的90条建议
Apr 14 Python
Elasticsearch 数据类型及管理
Apr 19 Python
Python编程实现的简单Web服务器示例
Jun 22 #Python
Python实现复杂对象转JSON的方法示例
Jun 22 #Python
Collatz 序列、逗号代码、字符图网格实例
Jun 22 #Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 #Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 #Python
使用python在本地电脑上快速处理数据
Jun 22 #Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 #Python
You might like
php批量上传的实现代码
2013/06/09 PHP
PHP实现的json类实例
2015/07/28 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
vue-test-utils初使用详解
2019/05/23 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
详解node.js 事件循环
2020/07/22 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
详解vue路由
2020/08/05 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
盘点提高 Python 代码效率的方法
2014/07/03 Python
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
python实现画圆功能
2018/01/25 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
python实现门限回归方式
2020/02/29 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
行政管理专业推荐信
2013/11/02 职场文书
医学院护理专业应届生求职信
2013/11/12 职场文书
护士演讲稿范文
2014/01/05 职场文书
会计专业自我鉴定
2014/02/10 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
党支部承诺书
2015/01/20 职场文书
讲座通知范文
2015/04/23 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书