python string.py 源码分析 三:maketrans

l = map(chr, xrange(256)) #将ascii转为字符串
_idmap = str('').join(l)
del l

# Construct a translation string
_idmapL = None #定义一个全局变量
def maketrans(fromstr, tostr):
    """maketrans(frm, to) -> string

    Return a translation table (a string of 256 bytes long)
    suitable for use in string.translate.  The strings frm and to
    must be of the same length.

    """
    if len(fromstr) != len(tostr):
        raise ValueError, "maketrans arguments must have same length"
    global _idmapL
    if not _idmapL:
        _idmapL = list(_idmap) #将ascii 字符串转换为列表
    L = _idmapL[:] #列表对象浅拷贝,目的是为了不影响global , or [x for x in _idmapL] or L = list(_idmapL)  or L = copy.copy(_idmapL)
    fromstr = map(ord, fromstr) #功能与chr相反,即将char转换为对应的数字编码
    for i in range(len(fromstr)):
        L[fromstr[i]] = tostr[i] #替换
    return ''.join(L) #重组

 

posted @ 2013-07-18 15:49  践道者  阅读(589)  评论(0编辑  收藏  举报