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中关于中文编码问题的处理建议
Apr 08 Python
Python编程之多态用法实例详解
May 19 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
Django中Model的使用方法教程
Mar 07 Python
Python 变量类型详解
Oct 10 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
django多对多表的创建,级联删除及手动创建第三张表
Jul 25 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
python科学计算之narray对象用法
Nov 25 Python
python读取与处理netcdf数据方式
Feb 14 Python
python实现画图工具
Aug 27 Python
举例讲解Python装饰器
Dec 24 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
laravel 4安装及入门图文教程
2014/10/29 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python如何判断数独是否合法
2016/09/08 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
在pytorch 中计算精度、回归率、F1 score等指标的实例
2020/01/18 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
Python如何解除一个装饰器
2020/08/07 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
工程监理应届生求职信
2013/11/09 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
股东协议书
2014/04/14 职场文书
英语求职信范文
2014/05/23 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014年教务工作总结
2014/12/03 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android