繁体   English   中英

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

[英]How to replace the right letters in a string 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 

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

Test.assert_equals(correct("51NGAP0RE"),"SINGAPORE");

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

您可以直接使用str.replace

def correct(string):
    return string.replace('5','S').replace('0','O').replace('1','I')

你为什么不使用str.maketransstr.translate

>>> "51NGAP0RE".translate(str.maketrans('501', 'SOI'))
'SINGAPORE'

包含在一个功能中:

def correct(s):
    return s.translate(str.maketrans('501', 'SOI'))

不要使用elif ,因为只有在前一个失败时才进行测试。 if代码将正常工作,将它们全部更改为普通。

但正如评论中所提到的,没有必要进行任何测试。 如果字母不在字符串中,则replace()将返回原始字符串,因此没有任何危害。

string = string.replace('5', 'S').replace('0', 'O').replace('1', 'I')

这是使用列表理解的另一种方法:

def correct(str_, replacements = {'5': 'S', '0': 'O', '1': 'I'}):
    return "".join(replacements.get(c, c) for c in str_)
print(correct("51NGAP0RE"))
#'SINGAPORE'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM