# 輕松python文本專題-maketrans和translate
場景:
過濾字符串的某些字符,我們從例子出發
~~~
>>>?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方法只接受一個參數,而bytes的translate方法是可以接收兩個參數,而且第二個參數可以快速實現刪除方法
~~~
>>>?bytes_tb?=?bytes.maketrans(b'abcd',?b'ABCD')??
>>>?b'abcdefg'.translate?(bytes_tb,b'a')??
b'BCDefg'??
>>>???
~~~
下面列舉一些translate的一些應用方法:(注意:為了快速實現刪除,所以下面的方法都是用bytes的translate)
修改某些字符串:
~~~
>>>?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-7.1 python中的字符串簡介與常用函數
- 零基礎學python-7.2 字符串常量
- 零基礎學python-7.3 字符串的一般使用
- 零基礎學python-7.4 修改字符串實例總結
- 零基礎學python-7.5 文本解析
- 零基礎學python-7.6 字符串格式化表達式
- 零基礎學python-7.7 字符串格式化方法(1)
- 零基礎學python-7.7 字符串格式化方法(2)
- 輕松python文本專題-單獨處理字符串每個字符的方法匯總
- 輕松python文本專題-字符與字符值轉換
- 輕松python文本專題-判斷對象里面是否是類字符串(推薦使用isinstance(obj,str))
- 輕松python文本專題-字符串對齊
- 輕松python文本專題-去掉字符串前后空格
- 輕松python文本專題-拼接、合并字符串
- 輕松python文本專題-字符串逐字符反轉以及逐單詞反轉
- 輕松python文本專題-maketrans和translate
- 輕松python文本專題-字符串開頭或者結尾匹配