python中的translate_3.8Python下translate方法

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

国外稳定加速器推荐

vypr |

Nord

alyad.png

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中分别提供了三个静态方法用于创建映射表。

... other posts by psz1992

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值