字符串过滤器_懒人小G的笔记_百度空间

#用python来制作一个过滤器可以很简单。

#例如实现一个对函数的所有参数进行过滤的过滤器,在过滤器中过滤时也可以进行异常处理。

#字符串过滤器

#对字符串保留属于特定字符集合的字符。

#简单实现:

a = 'abcde'

print a.replace('a','').replace('e','')

#best

import string

#建立一个字符表,用来产生补集。字符表为256个字符的字符串集合。

#maketrans{dy}个参数是需要替换的字符集合,第二个参数是替换目标集合

#maketrans('a','~')得到的字符表中的a会被替换为~

#参数为空是不替换字符

allchars = string.maketrans('','')

keep_char = 'aeiou'

#建立补集

#translate{dy}个参数是个字符表,必须是256个字符。第二个参数是待删除的字符。

#allcharskeep_char相同的字符删除,然后按照{dy}个参数指定的字符表翻译

del_char = allchars.translate(allchars,keep_char)

#a中包含非保留字符的字符删除

print a.translate(allchars,del_char)

#封装一下,就是个简单的过滤器了:)

def makefilter(keep_char):

    '''保留特定字符集合'''

    import string

    allchars = string.maketrans('','')

    del_char = allchars.translate(allchars,keep_char)

    def do_filter(s):

        return s.translate(allchars,del_char)

    return do_filter

s = 'abcdefg'

aeiou_filter = makefilter('aeiou')

print aeiou_filter(s)

#print : ae

用修饰器来实现一个对输入进行安全过滤的机制:

def makefilter(keep_char):

    '''保留特定字符集合'''

    import string

    allchars = string.maketrans('','')

    del_char = allchars.translate(allchars,keep_char)

    def do_filter(s):

        return s.translate(allchars,del_char)

    return do_filter

def alpha_filter(func):

    '''只保留字符'''

    import string

    def run(*argv):

        if len(argv) > 0:

            filter = makefilter(string.ascii_letters)

            handle_argv = [filter(i) for i in argv ]

            func(*handle_argv)

        else:

            func()

    return run

       

       

@alpha_filter

def no_safe(arvg1,arvg2):

    print 'arvg1:',arvg1

    print 'arvg2:',arvg2

no_safe('<script>','<iframe>')

#结果:

arvg1: script

arvg2: iframe



郑重声明:资讯 【字符串过滤器_懒人小G的笔记_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——