Python3.4【文本】之translate

來源:互聯網
上載者:User

"""1. makestrans()用法文法: str.maketrans(intab, outtab]);Python maketrans() 方法用於建立字元對應表的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字串,表示需要轉換的字元,第二個參數也是字串表示轉換的目標。註:兩個字串的長度必須相同,為一一對應的關係。Python3.4已經沒有string.maketrans()了,取而代之的是內建函數:bytearray.maketrans()、bytes.maketrans()、str.maketrans()"""intab = "abcd"outtab = "1234"str_trantab = str.maketrans(intab,outtab)test_str = "csdn blog: http://blog.csdn.net/wirelessqa"print (test_str.translate(str_trantab)) # 3s4n 2log: http://2log.3s4n.net/wirelessq1"""2. translate() 用法根據參數table給出的表(包含 256 個字元)轉換字串的字元, 要過濾掉的字元放到 del 參數中。文法:str.translate(table[, deletechars]);bytes.translate(table[, delete])   bytearray.translate(table[, delete])若給出了delete參數,則將原來的bytes中的屬於delete的字元刪除,剩下的字元要按照table中給出的映射來進行映射  """# 若table參數為None,則只刪除不映射print(b'http://www.csdn.net/wirelessqa'.translate(None, b'ts'))   #b'hp://www.cdn.ne/wireleqa'# 若table參數不為NONE,則先刪除再映射bytes_tabtrans = bytes.maketrans(b'abcdefghijklmnopqrstuvwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ') print(b'http://www.csdn.net/wirelessqa'.translate(bytes_tabtrans, b'ts')) #b'HP://WWW.CDN.NE/WIRELEQA'"""3. 閉包: 它是個內層函數,由一個變數來指代,而這個變數對於外層包含它的函數來說是本地變數"""def make_adder(addend):      def adder(augend):  #adder為內層函數        return augend + addend      return adder  a = make_adder(1)  #產生一個閉包,addend為1,注意return的是adderb = make_adder(2)  #產生另一個閉包,addend為2,注意return的是adderprint (a(100), b(100))  #a(100)就相當於adder(100),adden之前為1,因此返回100+1"""4. 對translate方法的簡單封裝,使用起來更加方便frm : intabto : outtabdelete : 指定刪除字元keep: 指定保留字元delete和keep有重疊時,delete優先  """def my_translator(frm = b'', to = b'', delete = b'', keep = None):      if len(to) == 1:         to = to * len(frm) #如果to只有一個字元,將字元的數量跟frm相等,這樣才能一一對應              #構建一個映射表      trans = bytes.maketrans(frm, to)            if keep is not None: #如果有保留字        allchars = bytes.maketrans(b'', b'')  # 擷取空映射表的所有字元        keep = keep.translate(allchars, delete)  # 從keep中去除delete中包含的字元,即keep與delete有重合時,優先考慮delete          delete = allchars.translate(allchars, keep)  # delete為從全體字元中除去keep,即不在keep的都刪掉                        # 閉包      def my_translate(s):          return s.translate(trans, delete)            return my_translate      # 測試my_tranlator  # 只保留數字  digits_only = my_translator(keep = b'0123456789')  print(digits_only(b'http://www.csdn.net/wirelessqa 520520'))  #b'520520'  # 刪除所有數字  no_digits = my_translator(delete = b'0123456789')  print(no_digits(b'http://www.csdn.net/wirelessqa 520520'))  #b'http://www.csdn.net/wirelessqa '  # 用*替換數字  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 ******'   # delete與keep有重合時的情況  trans = my_translator(delete = b'20', keep = b'0123456789')  print(trans(b'http://www.csdn.net/wirelessqa 520520'))  # b'55'

公眾帳號: wirelessqa

關於作者:

作者: 畢小朋 | 老 畢 郵箱: wirelessqa.me@gmail.com

微博: @WirelessQA 部落格: http://blog.csdn.net/wirelessqa




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.