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 13 Python
在Python中处理字符串之isdecimal()方法的使用
May 20 Python
python定时检查某个进程是否已经关闭的方法
May 20 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
Django添加sitemap的方法示例
Aug 06 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
利用Python校准本地时间的方法教程
Oct 31 Python
Django实现WebSSH操作物理机或虚拟机的方法
Nov 06 Python
python BeautifulSoup库的安装与使用
Dec 17 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编程开发“虚拟域名”系统
2006/10/09 PHP
php下批量挂马和批量清马代码
2011/02/27 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
php创建无限级树型菜单
2015/11/05 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
vue-router 起步步骤详解
2019/03/26 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
Pytorch中.new()的作用详解
2020/02/18 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
单位领导证婚词
2014/01/14 职场文书
仓库组长岗位职责
2014/01/29 职场文书
三方股东合作协议书
2014/10/28 职场文书
会议主持词开场白
2015/05/28 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
学习计划是什么
2019/04/30 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
如何Python使用re模块实现okenizer
2022/04/30 Python