def correct(s):
mapping = str.maketrans({'0': 'O', '1': 'I', '5': 'S'})
return s.translate(mapping)
#return string.replace('1','I').replace('0','O').replace('5','S')
print(correct("51NGAP0RE")) #=="SINGAPORE"
def correct(s):
mapping = str.maketrans({'0': 'O', '1': 'I', '5': 'S'})
return s.translate(mapping)
#return string.replace('1','I').replace('0','O').replace('5','S')
print(correct("51NGAP0RE")) #=="SINGAPORE"
是的,这是可能的。re.sub将计算所需替换的函数作为其第二个参数:
在上面的代码中,字典中的键和正则表达式中的字符是重复的。我们修复:
PS为什么我们需要re.escape?
没有它, map
{'0': '', '-': '', '9': ''}将给出一个[0-9]匹配任何数字的正则表达式,但不会选择减号。这不是所需要的。Cre.escape将产生一个表达式[0\-9],该表达式恰好选择三个字符0,-,9。你需要什么。在以编程方式生成正则表达式的所有情况下,您都需要注意在模式中具有特殊含义的字符和字符组合。
re.escape保护它们,以免出现意外。你有太多的代码: