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的Django框架实现事务交易管理的教程
Apr 20 Python
详解Python的Django框架中Manager方法的使用
Jul 21 Python
python win32 简单操作方法
May 25 Python
Python科学计算包numpy用法实例详解
Feb 08 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
python错误调试及单元文档测试过程解析
Dec 19 Python
Python 爬取必应壁纸的实例讲解
Feb 24 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
通过实例简单了解python yield使用方法
Aug 06 Python
Python Pillow(PIL)库的用法详解
Sep 19 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
python 实现按对象传值
2019/12/26 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
2014年母亲节寄语
2014/05/07 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
开会通知短信大全
2015/04/20 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
详解MySQL的内连接和外连接
2023/05/08 MySQL