• 【python学习】文本处理之translate


    2011-09-15

    看cookbook 看到很神奇的string.translate 函数

    可以剔除字符串中你不需要的串,并可做 maketrans映射 将一些字符,映射成另外的字符,目前还没想到应用场景。
    cookbook封装了 translate代码 新建一个facade 函数: 

    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)
    >>> digits_only('Chris Perkins : 224-7992')
    '2247992'


    真正神奇的是 自己打印了 string.maketrans(frm, to) 的值, 结果竟然都是空白。搞了半天没弄懂是怎么完成映射的?



    走进 lib/string.py 看源代码,才明白 ,maketrans结果是返回一个256bytes长度的字符串,而不是from to都为空时的空串,windows下竟然什么都打印不出来,害我跟踪了大半天。linux下可以看到 字符串的完整值,英文字符 数字和一些符号。

    trans = string.maketrans(frm, to) 获得原始的256字节字符串, 然后找到keep和delete的差集作为保留值,最后得出需要保留的串,将原始字符串解释为需要值。

  • 相关阅读:
    PostgreSQL缺省值
    PostgreSQL表的基本概念
    PostgreSQL调用函数
    4.2. PostgreSQL值表达式
    3.5. PostgreSQL继承
    3.4. PostgreSQL事务
    3.3. PostgreSQL外键
    3.2. PostgreSQL视图
    碰撞
    骨骼
  • 原文地址:https://www.cnblogs.com/shenguanpu/p/2299749.html
Copyright © 2020-2023  润新知