1. 程式人生 > >python文本 maketrans和translate

python文本 maketrans和translate

刪除 字符 repeat 保留 不能 需要 映射 class 接受

python文本 maketranstranslate

場景:

過濾字符串的某些字符,我們從例子出發

>>> tb=str.maketrans (‘abc‘,‘123‘)
>>> ‘abcd‘
.translate (tb)
‘123d‘

>>> ‘abcd+++a+b+cd‘
.translate (tb)
‘123d+++1+2+3d‘

>>>

1.建立字符映射表,也就是maketrans方法所做的事情,它返回一個字符串的映射表,意思是:如果字符串裏面出現a,那麽它就會變成對應的1

,如此類推,b->2,c->3

2.使用translate方法,將字符串裏面的字符改掉

註意:

1.映射兩遍的長度必須一致,不然報錯,也就是說‘abc‘一定需要對於‘123‘或者‘234‘等,不能是‘abc‘對應‘12‘,這個時候就報錯

>>> tb=str.maketrans (‘abc‘,‘12‘)
Traceback (most recent call last):
File
"", line 1, in

tb=str.maketrans (
‘abc‘,‘12‘
)
ValueError:
the first two maketrans arguments must have equal length

>>>

2.還需要註意的是,字符串的translate方法只接受一個參數,而bytestranslate方法是可以接收兩個參數,而且第二個參數可以快速實現刪除方法

>>> bytes_tb = bytes.maketrans(b‘abcd‘, b‘ABCD‘)
>>> b‘abcdefg‘.translate (bytes_tb,b‘a‘
)
b
‘BCDefg‘

>>>

下面列舉一些translate的一些應用方法:(註意:為了快速實現刪除,所以下面的方法都是用bytestranslate

修改某些字符串:

>>> def AToB(seq,frm,to):
if len(frm)or len(frm)>len(to):return
映射字符長度不一致

else
:
bytes_tb = bytes.maketrans(frm,to)
return
seq.translate (bytes_tb)


>>> AToB(
b‘abcd‘,b‘a‘,b‘t1‘
)
映射字符長度不一致

>>> AToB(
b‘abcd‘,b‘a1‘,b‘t‘
)
映射字符長度不一致

>>> AToB(
b‘abcd‘,b‘a‘,b‘t‘
)
b‘tbcd‘

>>>

刪除某些字符串:

>>> def AToB(seq,delete):
return seq.translate (None
,delete)

>>> AToB(
b‘abcd‘,b‘a‘
)
b‘bcd‘

>>>

保留某些字符:

>>> def AToB(seq,keep):
delete=seq.translate (
None
,keep)
return seq.translate (None,
"font-family: Arial, Helvetica, sans-serif;"
>delete)

>>> AToB(
b‘abcd‘,b‘a‘
)
b‘a‘

>>>

python文本 maketrans和translate