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创建一个最简单http webserver服务器的方法
May 08 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
Python新手入门最容易犯的错误总结
Apr 24 Python
Python入门_浅谈for循环、while循环
May 16 Python
python 内置函数filter
Jun 01 Python
获取Django项目的全部url方法详解
Oct 26 Python
人脸识别经典算法一 特征脸方法(Eigenface)
Mar 13 Python
python抖音表白程序源代码
Apr 07 Python
搞清楚 Python traceback的具体使用方法
May 13 Python
python opencv 二值化 计算白色像素点的实例
Jul 03 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 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更快的提供文件下载的代码
2012/06/13 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
utf8的编码算法 转载
2006/12/27 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
提升Python程序性能的7个习惯
2019/04/14 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
HashMap和Hashtable的区别
2013/05/18 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
写给女朋友的道歉信
2014/01/08 职场文书
小学教师管理制度
2014/01/18 职场文书
合作意向书范本
2014/03/31 职场文书
临时租车协议范本
2014/09/23 职场文书
离婚协议书样本
2015/01/26 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis