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

时间:2022-05-05
本文章向大家介绍【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的差集作为保留值,最后得出需要保留的串,将原始字符串解释为需要值。