2017-08-23 182 views
2

我有一個字母數字數字作爲字符串「4525ABT2」,我試圖「翻譯」爲只有數字。我嘗試了很多方法,很聰明,真的很愚蠢和漫長,而且看起來很多(我在這裏找到了Java的解決方案,但它在python中不起作用,也沒有將所有字符更改爲數字的解決方案)。 我的最後一次嘗試看起來像這樣在Python中將字母數字字符串轉換爲數字字符串

for i in alpha:  
     alpha1 = alpha.replace("A" or "B" or "C", "2") 
     alpha2 = alpha1.replace("D" or "E" or "F", "3") 
     alpha3 = alpha2.replace("G" or "H" or "I", "4") 
     alpha4 = alpha3.replace("J" or "K" or "L", "5") 
     alpha5 = alpha4.replace("M" or "N" or "O", "6") 
     alpha6 = alpha5.replace("P" or "Q" or "R" or "S", "7") 
     alpha7 = alpha6.replace("T" or "U" or "V", "8") 
     alpha8 = alpha7.replace("W" or "X" or "Y" or "Z", "9") 

phone = str(alpha8) 
return phone 

在此先感謝!

+0

提供您提到的Java解決方案的鏈接可能會幫助其他人深入瞭解你究竟想要做什麼。 – anothernode

+0

你說得對。我應該考慮一下。我找不到帖子,但下一次 - 會做。 – Ninsa

回答

-1

這將是更容易,如果你更換大小相同,但這應該工作:

replist = ["","","ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"] 

for i,v in enumerate(replist): 
    for l in v: 
     alpha = alpha.replace(l,str(i)) 

輸入: 「AHK62ZT」

輸出: 「2456298」

+1

這仍然是一個不好的解決方案,因爲替換字符串中的字符(在循環中不少於)是昂貴的。 – hop

+0

@hop哦,是的,你的解決方案要好得多,我只是想提供一個版本,使用與OPs原始嘗試相同的基本原則。 – Zinki

+0

非常感謝您的回答! – Ninsa

4

使用合適的工具:

>>> s = "4525ABT2" 
>>> table = str.maketrans('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
          '22233344455566677778889999') 
>>> s.translate(table) 
'45252282' 
相關問題