2017-08-23 13 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

@オハイオ州オハイオ州あなたのソリューションははるかに良いです、私はちょうどOPの元の試みと同じ基本原則を使用してバージョンを提供したいと思います。 – Zinki

+0

ありがとうございました! – Ninsa

4

が適切なツールを使用して、 :

>>> s = "4525ABT2" 
>>> table = str.maketrans('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
          '22233344455566677778889999') 
>>> s.translate(table) 
'45252282' 
関連する問題