0

3.8Python下translate方法

Posted by 撒得一地 on 2016年2月12日 in python教程

translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符。它的优势在于可以同时进行多个替换,有些时候比replace效率高得多。

使用这个方法的方式有很多(比如替换换行符或者其他因平台而异的特殊字符)。在使用translate转换之前,需要先完成一张转换表。转换表中是以某字符替换某字符的对应关系。使用string模块里面的maketrans函数就可以完成这个映射表。

maketrans函数接受两个参数:两个等长的字符串,表示第一个字符串中的每个字符都用第二个字符串中相同位置的字符串替换。比如:

在python2.X下

>>>import string #导入string模块
#建立映射表,将字符串中含有的'c','s'替换为'k','z' 
>>>table = string.makestrans('cs','kz')
>>>s = "play cs"
>>>s.translate(map)
>>>"play kz" 

在python3.X下

>>> map = str.maketrans('123','abc')
>>> s = "123123123"
>>> s.translate(map)
'abcabcabc'

在比较低的python版本中,translate的第二个参数是可选的,这个参数是用来指定需要删除的字符。而在3.X版本中,要删除的字符则在makestrans参数中指定。比如:

在python2.X下

>>> import string
>>> map = string.maketrans('123', 'abc')
>>> s = '54321123789'
#除了转换,还要删除字符串中的字符'7','8'
>>> s.translate(map, '78')   
#转换后的字符串没有字符'7','8'           
'54cbaabc9'                             

在python3.X下

>>> map = str.maketrans('fff','ddd','12')
>>> s = "fffdd1234"
>>> s.translate(map)
'ddddd34'

总结

2.X中maketrans和translate函数的签名:

string.maketrans(from, to)

string.translate(s, table[, deletechars])
str.translate(table[, deletechars])
unicode.translate(table)

3.X中maketrans和translate函数的签名:

static str.maketrans(x[, y[, z]])
static bytes.maketrans(from, to)
static bytearray.maketrans(from, to)

str.translate(map)
bytes.translate(table[, delete])
bytearray.translate(table[, delete])

从中可以看出,相对于2.X的string模块的maketrans方法,3.X中分别提供了三个静态方法用于创建映射表。

上一篇:

下一篇:

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

5 + 7 = ?

网站地图|XML地图

Copyright © 2015-2018 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.