您的位置:首页 > 编程语言 > Python开发

Python——maketrans和translate方法到底是什么玩意儿

2013-06-25 17:31 274 查看
最近在看Python Cookbook,发现无法理解字符串处理的两个方法maketrans, translate,在Python解释器里面查看说明文档也语焉不详,莫名其妙,结合网上看到的一些说明,这里以比较容易理解的方式来解释一下这两个方法,算是对官方文档的一些注解。

maketrans和translate是密切相关的两个方法,先看translate的说明

S.translate(table [,deletechars]) -> string

Return a copy of the string S, where all characters occurring
in the optional argument deletechars are removed, and the
remaining characters have been mapped through the given
translation table, which must be a string of length 256.

简单来说就是对字符串S移除deletechars包含的字符,然后保留下来的字符按照table里面的字符映射关系映射(比如a变成A,后面会解释到)。那个莫名其妙的"which must be a string of length 256"就不用深究了,反正table就是由string.maketrans方法生成的,对于string.maketrans方法,这里有个更清晰的解释,如下:

string.maketrans(intab, outtab) --> This method returns a translation table that maps each character in the intab string into the character at the same position in the outtab string. Then this table is passed to the translate() function. Note that both intab and outtab must have the same length.
下面是一些实例说明:
import string

s = 'abcdefg-1234567'
table = string.maketrans('', '') #没有映射,实际上就是按原始字符保留,看下面用到translate中时的效果
s.translate(table)  # 输出abcdefg-1234567
s.translate(table, 'abc123') #输出defg-4567 可以看到删除了字符abc123

#下面再看有字符映射时的效果
table = string.maketrans('abc', 'ABC') #用于translate中时的效果如下
s.translate(table) #输出ABCdefg-1234567 就是将abc映射为大写的ABC,前提是abc如果被保留下来了
s.translate(table, 'ab123') #输出Cdefg-4567 先把s中的ab123去除了,然后在保留下来的字符中应用table中指定的字符映射关系映射:c -> C


解释完毕,现在知道为什么maketrans(intab, outtab)中两个字符串参数长度必须一样了,因为是字符一对一的映射。

神奇的Python中总是有很多奇怪的存在

阅读(606) | 评论(1) | 转发(0) |

0
上一篇:pythonchallenge 1

下一篇:pythonchallenge 2

相关热门文章

网站设计:复杂产品的响应式设...

《软件需求最佳实践》的思考...

白領女性腎虛都是“習慣”的錯...

审计证据是什么

企业邮件服务器搭建之品牌形象...

python 自动化测试平台 Robot ...

python snmp 自动化2-在python...

python snmp 自动化测试1-安装...

自动化测试详细测试计划 模板...

python snmp 自动化3-修改pyth...

Python 动态创建类

一个基于multiprocessing的并...

Python 数据库管理与操作...

利用Bicho抓取基于Jira的缺陷...

Lua中的协程即协同程序...

给主人留下些什么吧!~~



chinaunix网友2010-11-17 16:55:27
很好的, 收藏了
推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com 回复 | 举报

评论热议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: