2016-12-09 6 views
0

gsmメッセージを後で送信するために置き換えようとしています。私はパラメータとしてメッセージを受け取り、gsmフォーマットのメッセージに変換する以下の関数を使用します。python preg_replaceメッセージをgsm形式のメッセージに変換する

import re 
    @staticmethod 
     def gsm_message(message): 

      expressions = { 
       '/[άΆαΑ]/u': 'A', 
       '/[βΒ]/u': 'B', 
       '/[έΈεΕ]/u': 'E', 
       ......... more 
      } 

      translated_message = re.sub(expressions.keys(), expressions.values(), message) 

      print(translated_message) 

私が印刷しようとしているときのエラーは:unhashable type: 'list'です。

私はそれを動作させるために何ができますか?

+0

をちょうど私はので、多分私はwrong..iがにpreg_replaceためsure..i検索はないですやって何をしたいのか説明し、多分私は私のtitle..iに間違っていますgoogleと私はそれが私はpreg_replaceと同じ考えている原因を使用するので、私はre.subを見つけた..あなたはいくつかのアイデアをどのように動作していますか? – CodeL

+0

私はPHPから来ているので、このように書いたのです。だから、私のコードのpythonでの正しい構文はどうですか? – CodeL

答えて

0

以下はPython3で動作します。

import re 

def gsm_message(message): 
    expressions = { 
     'ά': 'A', 
     'Ά': 'A', 
     'α': 'A', 
     'Α': 'A', 
     'β': 'B', 
     'Β': 'B', 
     'έ': 'E', 
     'Έ': 'E', 
     'ε': 'E', 
     'Ε': 'E', 
    } 
    pattern = re.compile('|'.join(expressions.keys())) 
    translated_message = pattern.sub(lambda x: expressions[x.group()], message) 
    print(translated_message) 

message = "ββααέ" 
gsm_message(message) 

は与える:

BBAAE 
+0

それは動作します!ありがとう – CodeL

関連する問題