i am trying to to make a replace in order to send a gsm message later. i use the function below where it takes the message as parameter and convert it to a gsm formatted message.
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)
the error i get when i am trying to print is: unhashable type: 'list'.
what can i do to make it work?
答案 0 :(得分: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