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持久性管理pickle模块详细介绍
Feb 18 Python
python 调用c语言函数的方法
Sep 29 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
Jan 29 Python
python中字符串的操作方法大全
Jun 03 Python
django Serializer序列化使用方法详解
Oct 16 Python
解决python3捕获cx_oracle抛出的异常错误问题
Oct 18 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
关于TensorFlow新旧版本函数接口变化详解
Feb 10 Python
Windows系统下pycharm中的pip换源
Feb 23 Python
Python API len函数操作过程解析
Mar 05 Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 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将时间差转换为字符串提示
2011/09/07 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
php绘制圆形的方法
2015/01/24 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
php简单日历函数
2015/10/28 PHP
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
基于jquery的cookie的用法
2011/01/10 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
神经网络python源码分享
2017/12/15 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
利用Python检测URL状态
2019/07/31 Python
Django中reverse反转并且传递参数的方法
2019/08/06 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
工程班组长岗位职责
2013/12/30 职场文书
企业贷款委托书格式
2014/09/12 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
Python IO文件管理的具体使用
2022/03/20 Python
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL