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之编写类之三子类
Oct 11 Python
10款最好的Web开发的 Python 框架
Mar 18 Python
在RedHat系Linux上部署Python的Celery框架的教程
Apr 07 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
python利用微信公众号实现报警功能
Jun 10 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
python获取对象信息的实例详解
Jul 07 Python
Django框架中视图的用法
Jun 10 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
php5 图片验证码实现代码
2009/12/11 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
探索Vue.js component内容实现
2016/11/03 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
微信小程序 scroll-view的使用案例代码详解
2020/06/11 Javascript
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
Python科学计算之Pandas详解
2017/01/15 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
浅析Python 条件控制语句
2020/07/15 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
刑事辩护授权委托书范本
2014/10/17 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
vue3中的组件间通信
2021/03/31 Vue.js
深入探讨opencv图像矫正算法实战
2021/05/21 Python
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电