zoukankan      html  css  js  c++  java
  • Python天天美味(9) translator(转)

    1.string.maketrans设置字符串转换规则表(translation table)

    allchars = string.maketrans('''')#所有的字符串,即不替换字符串
       
    aTob = string.maketrans('a','b')#将字符a转换为字符b

    2.translate函数进行字符串的替换和删除,第一个参数是字符串转换规则表(translation table),第二个参数是要删除的字符串。比如,要将字符串s中的所有e替换为a,同时要删除所有的o

    aTob = string.maketrans('e','a')
    = 'hello python'
    print s.translate(aTob, 'o')


    输出结果:
    hall pythn

    3.假如我们这样使用

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

    allchars表示所有的字符串,而k表示从所有的字符串中去除掉字符a,就是说所有的字符,除了a,因此,我们再调用如下方法时:

    = 'abc'
    print s.translate(allchars, k)

    字面意思是,输出“字符串s中除去任何不是字符a的字符",即,只输出字符a,因此输出结果为:
    a

    4.现在,已经不难理解下面这个函数了

    import string
    def translator(frm='', to='', delete='', keep=None):
        
    if len(to) == 1:
            to 
    = to * len(frm)
        trans 
    = string.maketrans(frm, to)
        
    if keep is not None:
            allchars 
    = string.maketrans('''')
            delete 
    = allchars.translate(allchars, keep.translate(allchars, delete))
        
    def translate(s):
            
    return s.translate(trans, delete)
        
    return translate

    调用:

    digits_only = translator(keep=string.digits)
    print digits_only('Chris Perkins : 224-7992')

    digits_to_hash 
    = translator(frm=string.digits, to='#')
    print digits_to_hash('Chris Perkins : 224-7992')

    输出结果:
    2247992
    Chris Perkins : ###-####

  • 相关阅读:
    LeetCode 977 有序数组的平方
    LeetCode 24 两两交换链表中的节点
    LeetCode 416 分割等和子集
    LeetCode 142 环形链表II
    LeetCode 106 从中序与后序遍历序列构造二叉树
    LeetCode 637 二叉树的层平均值
    LeetCode 117 填充每个节点的下一个右侧节点
    LeetCode 75 颜色分类
    redhat 7.4 挂载ntfs格式的u盘并且使用
    redhat 查看CPU frequency scaling(CPU频率缩放)
  • 原文地址:https://www.cnblogs.com/qq78292959/p/3066653.html
Copyright © 2011-2022 走看看