日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中的translate函数_Python:内置函数makestrans()、translate()

發布時間:2023/12/16 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中的translate函数_Python:内置函数makestrans()、translate() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、makestrans()

格式: str.maketrans(intab,?outtab);

功能:用于創建字符映射的轉換表,對于接受兩個參數的最簡單的調用方式,

第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。

注:兩個字符串的長度必須相同,為一一對應的關系。

注:Python3.6中已經沒有string.maketrans()了,取而代之的是內建函數:

bytearray.maketrans()、bytes.maketrans()、str.maketrans()

intab = 'abcd'outtab= '1234'

#用str.maketrans()函數,將intab的字符轉換為outtab的字符;

str_trantab =str.maketrans(intab,outtab)print(str_trantab, type(str_trantab))#輸出:{97: 49, 98: 50, 99: 51, 100: 52}

test_str= 'csdn blog: http://blog.csdn.net/wirelessqa'

#使用translate()函數,對test_str文件進行加密,按轉換表str_transtab

print(test_str.translate(str_trantab))#輸出:3s4n 2log: http://2log.3s4n.net/wirelessq1

二、translate()

功能:

1)根據參數table給出的映射表表(包含?256?個字符),轉換字符串的字符;

2)根據 [, dele] 內的字符集,刪除字符串中對應的字符。

語法:

str.translate(table[,?deletechars]);? #對字符串操作

bytes.translate(table[,?delete])? ? #對字節操作

bytearray.translate(table[,?delete])? ?#對數組操作

例:

print(b'http://ww/w.csdn.net/wirelessqa'.translate(None, b'ts'))#輸出:b'hp://www.cdn.ne/wireleqa'

#使用bytes.maketrans()函數,得到映射表;#字符串前必須加:b,不然報錯:translate() takes exactly one argument (2 given),即translate只能接受一個參數

bytes_tabtrans = bytes.maketrans(b'abcdefghijklmnopqrstuvwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ')print(bytes_tabtrans)#輸出:b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'#bytes_tabtrans為一個bytes類型的映射表

print(type(bytes_tabtrans))#輸出:

print(b'http://www.csdn.net/wirelessqa'.translate(bytes_tabtrans, b'ts'))#輸出:b'HP://WWW.CDN.NE/WIRELEQA'

三、閉包

思路:將一個函數函數2封裝在函數1中,通過函數1將函數2返回;

#閉包應用舉例

defcorue():

a= 10

defcorue_cuent(x):return a * x *xreturncorue_cuent#調用函數corue()后,將函數corue_cuent()返回給變量f;

f =corue()print(f(2))#輸出:40

四、對translate()函數的簡單封裝,使用起來更加方便

實例應用:

#frm:intab#to:outtab#delete:指定刪除字符#keep:指定保留字符#delete和keep有重疊時,delete優先

def my_translator(frm = b'', to = b'', delete = b'', keep =None):#如果to只有一個字符,將字符的數量跟frm相等,這樣才能一一對應

if len(to) == 1:

to= to *len(frm)#構建一個映射表

trans =bytes.maketrans(frm, to)#如果有保留字

if keep is notNone:

allchars= bytes.maketrans(b'', b'')#獲取空映射表的所有字符

keep =keep.translate(allchars, delete)#從keep中去除delete中包含的字符,即keep與delete有重合時,優先考慮delete

delete =allchars.translate(allchars, keep)#delete為從全體字符中除去keep,即不在keep的都刪掉

#閉包:即在函數my_translator()內部返回函數my_translate()

defmy_translate(s):returns.translate(trans, delete)returnmy_translate#測試my_tranlator

#A、只保留數字

digits_only = my_translator(keep = b'0123456789')print(digits_only(b'http://www.csdn.net/wirelessqa 520520'))#輸出:b'520520'

#B、刪除所有數字

no_digits = my_translator(delete = b'0123456789')print(no_digits(b'http://www.csdn.net/wirelessqa 520520'))#輸出:b'http://www.csdn.net/wirelessqa'

#C、用*替換數字

digits_to_hash = my_translator(frm = b'0123456789', to = b'*')print(digits_to_hash(b'http://www.csdn.net/wirelessqa 520520'))#輸出:b'http://www.csdn.net/wirelessqa ******'

#D、delete與keep有重合時的情況

trans = my_translator(delete = b'20', keep = b'0123456789')print(trans(b'http://www.csdn.net/wirelessqa 520520'))#輸出:b'55'

五、unicode.translate()

功能:#待完善。。。

#去掉字符的重音符,重音符可以理解為中文的拼音的音標;

#將unicode的代碼點(u751F),轉換為漢字;

a = '\\u751F\\u5316\\u5371\\u673A'

#'utf-8':表示?

print (a.encode('utf-8').decode('unicode_escape'))#輸出:生化危機

總結

以上是生活随笔為你收集整理的python中的translate函数_Python:内置函数makestrans()、translate()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。