【python cookbook】简化字符串的translate 方法的使用

#!/usr/bin/python
# -*- coding: utf-8 -*-

#简化字符串的translate 方法的使用

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))
#
keep.translate(allchars,delete) 表示去掉keep和deleted中共有的字符
    def translate(s):
return s.translate(trans,delete)
return translate

测试

>>>digits_only = translator(keep=string.digits)
>>>digits_only ('abcd,1234')

>>> '1234'
keep=string.digits    表示只取keep中数字

 

translate()

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

Parameters:

Here is the detail of parameters:

  • table: You can use the maketrans() helper function in the string module to create a translation table.

  • deletechars: list of characters to be removed from the source string.

Return Value:

It returns a translated copy of the string.

简单来说就是对字符串S移除deletechars包含的字符,然后保留下来的字符按照table里面的字符映射关系映射(比如a变成A)。

无deletechars的例子

#!/usr/bin/python

from string import maketrans   # Required to call maketrans function.

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";
print str.translate(trantab);


th3s 3s str3ng 2x1mpl2....w4w!!!

 

有deletechars的例子

 

#!/usr/bin/python

from string import maketrans   # Required to call maketrans function.

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";
print str.translate(trantab, 'xm');

#This will produce following result:
th3s 3s str3ng 21pl2....w4w!!!

 

 

maketrans()

 

str.maketrans(intab, outtab]);

Parameters:

Here is the detail of parameters:

  • intab: string having actual characters.

  • outtab: string having corresponding mapping character.

Return Value:

It returns a translate table to be used translate() function.

Example:

#!/usr/bin/python

from string import maketrans   # Required to call maketrans function.

intab = "aeiou"
outtab = "12345"
trantab = maketrans(intab, outtab)

str = "this is string example....wow!!!";
print str.translate(trantab);

th3s 3s str3ng 2x1mpl2....w4w!!!

allchars = string.maketrans('','')  表示所有字符  即使用时无需翻译

 

 

转载于:https://www.cnblogs.com/cacique/archive/2012/07/21/2602351.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值