摘要:不知道大家是否見過這個東西反正我清楚記得我是見過的可是為什么會寫這個東西有以下一個場景怎樣將一個字符串中的中文字符統一轉換成英文字符不知道大家會怎樣去做先列舉一個例子將其中的轉換成轉換成我的做法是簡直就是可是這兩個字太可怕了后端老大直接開噴
不知道大家是否見過這個東西,反正我清楚記得我是見過的,可是為什么會寫這個東西?有以下一個場景:
怎樣將一個字符串中的中文字符統一轉換成英文字符?
不知道大家會怎樣去做?先列舉一個例子:
"hello i"m jim"將其中的 "e" 轉換成 "i" , "o" 轉換成 "!"
我的做法是:
s = "hello i"m jim" ch = "eo" en_ch = "i!" for i, c in enumrate(s): if c in ch: s = s.replace(c, en_ch[ch.index(c)])
簡直就是so easy! , 可是... 這兩個字太可怕了,后端老大直接開噴,寫的啥玩意.難道還有什么好方法?只能悄咪咪的看人家寫嘍
s = "hello i"m jim" ch = "eo" en_ch = "i!" TRANS_TABLE = {ord(f): ord(t) for f, t in zip(ch, en_ch)} s.translate(TRANS_TABLE)
呦吼!!!,這是什么鬼?怎么記得在哪里看見過,想不起來了......趕緊百度,原來這是翻譯表,怎么操作呢?
from string import maketrans s = "hello i"m jim" ch = "eo" en_ch = "i!" # python2.0+ # from string import maketrans # TRANS_TABLE = maketrans(ch, en_ch) # python3.0+ TRANS_TABLE = str.maketrans(ch, en_ch) s.translate(TRANS_TABLE)
這和后端老大寫的不一樣呀?等價嗎?
# python2.7 from string import maketrans maketrans("eo", "i!") # >>> "x00x01x02x03x04x05x06x07x08 x0bx0c x0ex0fx10x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1f !"#$%&"()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdifghijklmn!pqrstuvwxyz{|}~x7fx80x81x82x83x84x85x86x87x88x89x8ax8bx8cx8dx8ex8fx90x91x92x93x94x95x96x97x98x99x9ax9bx9cx9dx9ex9fxa0xa1xa2xa3xa4xa5xa6xa7xa8xa9xaaxabxacxadxaexafxb0xb1xb2xb3xb4xb5xb6xb7xb8xb9xbaxbbxbcxbdxbexbfxc0xc1xc2xc3xc4xc5xc6xc7xc8xc9xcaxcbxccxcdxcexcfxd0xd1xd2xd3xd4xd5xd6xd7xd8xd9xdaxdbxdcxddxdexdfxe0xe1xe2xe3xe4xe5xe6xe7xe8xe9xeaxebxecxedxeexefxf0xf1xf2xf3xf4xf5xf6xf7xf8xf9xfaxfbxfcxfdxfexff" # python3.5 str.maketrans("eo", "i!") # >>> {101: 105, 111: 33}
原來如此...通過上面的注釋可以看到python3中的字典表很簡單清晰,而python2中是一大串看不懂的十六進制數據,其實在python2中默認將0-255整數對應的字符都先進行了轉換生成字符串,然后再將傳入的第一個參數字符對應的字符串中的位置用第二個參數字符依次進行替換
如:?對應為255,及默認生成字符串的最后一個十六進制數據xff對應的字符,maketrans("1", "2"),那么會發現上面字符串中的1變成了2,字符串我寫在文章最下方.
這就是python2/3的一個處理優化.
這樣就可以很方便的去處理字符串,而不是像我這樣小白只能循環,當然我也不是只能想到循環,還有正則,哈哈哈,但是感覺這種更舒服.最后感嘆一句:革命尚未成功,同志仍需努力...
# "1"替換"2"結果字符串 # x00x01x02x03x04x05x06x07x08 x0bx0c x0ex0fx10x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1f!"#$%&"()*+,-./0223456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~x7fx80x81x82x83x84x85x86x87x88x89x8ax8bx8cx8dx8ex8fx90x91x92x93x94x95x96x97x98x99x9ax9bx9cx9dx9ex9fxa0xa1xa2xa3xa4xa5xa6xa7xa8xa9xaaxabxacxadxaexafxb0xb1xb2xb3xb4xb5xb6xb7xb8xb9xbaxbbxbcxbdxbexbfxc0xc1xc2xc3xc4xc5xc6xc7xc8xc9xcaxcbxccxcdxcexcfxd0xd1xd2xd3xd4xd5xd6xd7xd8xd9xdaxdbxdcxddxdexdfxe0xe1xe2xe3xe4xe5xe6xe7xe8xe9xeaxebxecxedxeexefxf0xf1xf2xf3xf4xf5xf6xf7xf8xf9xfaxfbxfcxfdxfexffpython2中maketrans源碼:
l = map(chr, xrange(256)) _idmap = str("").join(l) del l # Construct a translation string _idmapL = None def maketrans(fromstr, tostr): """maketrans(frm, to) -> string Return a translation table (a string of 256 bytes long) suitable for use in string.translate. The strings frm and to must be of the same length. """ if len(fromstr) != len(tostr): raise ValueError, "maketrans arguments must have same length" global _idmapL if not _idmapL: _idmapL = list(_idmap) L = _idmapL[:] fromstr = map(ord, fromstr) for i in range(len(fromstr)): L[fromstr[i]] = tostr[i] return "".join(L)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44119.html
摘要:自動內存管理當你在使用時,實際上并不需要考慮內存。這種自動內存管理可以使開發人員更輕松。即使在手動內存管理的語言中,通常會從語言運行時獲得一些幫助。這就是為什么許多現代語言使用自動內存管理的原因避免人為錯誤。 原文地址:A crash course in memory management 原文作者:Lin Clark 譯者:黑黑 校對者:Bob 要理解為什么將 Array...
摘要:基本的自定義在我們感受到中所有東西的便利之后,讓我們看看如何改進它。不像的選擇器,的鍵在每個對象中只能重復一次。語言特定的設置會覆蓋全局域的任何設置。作于域的名稱顯示在設置視圖中的每個語言的包中。 基本的自定義 在我們感受到Atom中所有東西的便利之后,讓我們看看如何改進它。可能有一些快捷鍵你經常使用但是感覺很別扭,或者一些顏色不是十分適合你。Atom具有驚人的靈活性,所以讓我們對它...
摘要:常見錯誤分析與解決方法總結一翻譯不能連接到上的分析這說明計算機是存在的,但在這臺機器上卻沒提供服務。解決同樣對癥下藥,不同的原因不同的處理方法。九翻譯有一個語法錯誤在你的中分析論壇標準的程序是沒有語法錯誤的。表名,可以暫時解決問題。MySQL常見錯誤分析與解決方法總結 一、Cant connect to MySQL server on localhost (10061)翻譯:不能連接到 ...
摘要:它到底是什么,是作用于數據的結構嗎這同樣是一個模棱兩可的術語。最后我還是搞清楚了數據結構的概念,那就簡單的把術語數據結構稱為數據的結構。目標數據結構系列技術文章,會告訴你數據結構并不是晦澀難懂的,更不是神秘的。 翻譯:瘋狂的技術宅英文:https://code.tutsplus.com/tut...說明:本文翻譯自系列文章《Data Structures With JavaScrip...
摘要:閑扯在翻譯之前我還是要簡要介紹一下,這是一款跨時代的框架。后來開始使用動態的腳本語言,比如后來以此構成了框架。最為出名的自然是。通過來傳遞數據,在本地起這種事情使得開發進入了新的階段。如果你覺得我翻譯的很爛,來給我說吧郵件地址 閑扯 在翻譯之前我還是要簡要介紹一下Meteor,這是一款跨時代的框架。真的,完全沒有騙你。 一開始的網站是純靜態頁面搭建的。 后來開始使用動態的腳本語言,比如...
閱讀 1595·2021-11-22 15:33
閱讀 1741·2021-11-15 18:01
閱讀 678·2021-10-09 09:43
閱讀 2619·2021-09-22 16:03
閱讀 764·2021-09-03 10:28
閱讀 3565·2021-08-11 10:22
閱讀 2727·2019-08-30 15:54
閱讀 1768·2019-08-30 14:21