python字符串的过滤_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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值