前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【python学习】文本处理之-translate

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

作者头像
架构师刀哥
发布2018-03-20 17:19:58
8510
发布2018-03-20 17:19:58
举报
文章被收录于专栏:坚毅的PHP坚毅的PHP

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

代码语言:javascript
复制
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的差集作为保留值,最后得出需要保留的串,将原始字符串解释为需要值。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-12-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档