如何替换字符串python中的正确字母

Dap*_*hne 2 python

作业是:

您的任务是更正数字化文本中的错误.您只需要处理以下错误:

  • S被误解为5
  • O被误解为0
  • 我被误解为1

我的代码:

def correct(string):
    for i in string:
        if '5' in string:
           string = string.replace('5','S') 
        elif '0' in string:
          string = string.replace('0','O')
        elif '1' in string:
            string = string.replace('1','I')
    return string 
Run Code Online (Sandbox Code Playgroud)

我知道这个解决方案不适用于:

Test.assert_equals(correct("51NGAP0RE"),"SINGAPORE");
Run Code Online (Sandbox Code Playgroud)

有没有人有关于如何使这个更通用的功能,适用于每个单词的提示?

Rak*_*esh 5

你可以str.replace直接使用.

def correct(string):
    return string.replace('5','S').replace('0','O').replace('1','I')
Run Code Online (Sandbox Code Playgroud)


use*_*203 5

你为什么不利用str.maketransstr.translate:

>>> "51NGAP0RE".translate(str.maketrans('501', 'SOI'))
'SINGAPORE'
Run Code Online (Sandbox Code Playgroud)

包含在一个功能中:

def correct(s):
    return s.translate(str.maketrans('501', 'SOI'))
Run Code Online (Sandbox Code Playgroud)

  • 在python2中,它位于[`string`](https://docs.python.org/2/library/string.html#string.translate)库中.一个很好的理由不使用`string`作为变量名! (4认同)