python字符串过滤性能比较5种方法

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Python 过滤字符串的技巧,map与itertools.imap

    具体的实例 我们需要在目录中遍历,包括子目录(哈哈),找出所有后缀为:rmvb ,avi ,pmp 的文件.(天哪?!你要干什么?这可是我的隐私啊--) 复制代码 代码如下: import os def anyTrue(predicate, sequence): return True in map(predicate, sequence) def filterFiles(folder, exts): for fileName in os.listdir(folder): if os.path.

  • python过滤字符串中不属于指定集合中字符的类实例

    本文实例讲述了python过滤字符串中不属于指定集合中字符的类.分享给大家供大家参考.具体如下: # -*- coding: utf-8 -*- import sets class Keeper(object): def __init__(self, keep): self.keep = sets.Set(map(ord, keep)) def __getitem__(self, n): if n not in self.keep: return None return unichr(n) de

  • python实现mysql的单引号字符串过滤方法

    本文实例讲述了python实现mysql的单引号字符串过滤方法.分享给大家供大家参考,具体如下: 最主要用这个函数,可以处理MySQLdb.escape_string(content). class Guide: def __init__(self): self.time_zone = 7*3600 #设置时区 self.now_time = int(time.time()) + self.time_zone #取得当前时间 #本地 self.gamedb_model = mysql_conn.

  • python字符串过滤性能比较5种方法

    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 retu

  • Python 字符串去除空格的五种方法

    在处理Python代码字符串的时候,我们常会遇到要去除空格的情况,所以就总结了多种方法供大家参考. 1.strip()方法 去除字符串开头或者结尾的空格 str = " Hello world " str.strip() 输出: "Hello world" 2.lstrip()方法 去除字符串开头的空格 str = " Hello world " str.lstrip() 输出: 'Hello world ' 3.rstrip()方法 去除字符串

  • python字符串加密解密的三种方法分享(base64 win32com)

    1. 最简单的方法是用base64: 复制代码 代码如下: import base64 s1 = base64.encodestring('hello world')s2 = base64.decodestring(s1)print s1,s2 # aGVsbG8gd29ybGQ=\n# hello world Note: 这是最简单的方法了,但是不够保险,因为如果别人拿到你的密文,也可以自己解密来得到明文 2. 第二种方法是使用win32com.client 复制代码 代码如下: import

  • Python字符串拼接、截取及替换方法总结分析

    本文实例讲述了Python字符串拼接.截取及替换方法.分享给大家供大家参考,具体如下: python字符串连接 python字符串连接有几种方法,我开始用的第一个方法效率是最低的,后来看了书以后就用了后面的2种效率高的方法,跟大家分享一下. 先介绍下效率比较低的方法: a = ['a','b','c','d'] content = '' for i in a: content = content + i print content content的结果是:'abcd' 后来我看了书以后,发现书上

  • python对指定字符串逆序的6种方法(小结)

    对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,今天总结了一下python中对于字符串的逆序输出的几种常用的方法 方法一:直接使用字符串切片功能逆转字符串 #!usr/bin/env python # encoding:utf-8 def strReverse(strDemo): return strDemo[::-1] print(strReverse('pythontab.com')) 结果: moc

  • Python删除字符串中字符的四种方法示例代码

    目录 一.删除字符串两端的一种或多种字符 二.删除字符串中单个固定位置的字符 三.删除字符串中任意位置的一种或多种字符 四.同时删除字符串内的多种不同字符 一.删除字符串两端的一种或多种字符 #strip().lstrip().rstrip()方法:(默认删除空格符) A.list.strip(字符):删除字符串两端的一种或多种字符: 例:删除字符串s两端 a 或 b 或 c 字符: s = 'abbmmmcccbbb' s1 = s.strip('abc') print(s1) #输出:mmm

  • python 统计代码耗时的几种方法分享

    时间戳相减 在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时. 获取时间戳time.time() import time start_time = time.time() sum = 0 for i in range(100000000):     sum += i print(sum) end_time = time.time() print("耗时: {:.2f}秒".format(end_time - start_time)) 输出: 4999999950000000

  • Python中创建字典的几种方法总结(推荐)

    1.传统的文字表达式: >>> d={'name':'Allen','age':21,'gender':'male'} >>> d {'age': 21, 'name': 'Allen', 'gender': 'male'} 如果你可以事先拼出整个字典,这种方式是很方便的. 2.动态分配键值: >>> d={} >>> d['name']='Allen' >>> d['age']=21 >>> d[

  • Python生成MD5值的两种方法实例分析

    本文实例讲述了Python生成MD5值的两种方法.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- import datetime # NO.1 使用MD5 import md5 src = 'this is a md5 test.' m1 = md5.new() m1.update(src) print m1.hexdigest() 运行结果: 174b086fc6358db6154bd951a8947837 # -*- coding:utf-8 -*- # NO

  • Python实现重建二叉树的三种方法详解

    本文实例讲述了Python实现重建二叉树的三种方法.分享给大家供大家参考,具体如下: 学习算法中,探寻重建二叉树的方法: 用input 前序遍历顺序输入字符重建 前序遍历顺序字符串递归解析重建 前序遍历顺序字符串堆栈解析重建 如果懒得去看后面的内容,可以直接点击此处本站下载完整实例代码. 思路 学习算法中,python 算法方面的资料相对较少,二叉树解析重建更少,只能摸着石头过河. 通过不同方式遍历二叉树,可以得出不同节点的排序.那么,在已知节点排序的前提下,通过某种遍历方式,可以将排序进行解析

随机推荐