首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换字符串python中的正确字母

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

Stack Overflow用户
提问于 2018-04-13 15:46:46
回答 4查看 349关注 0票数 2

任务是:

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

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

我的代码:

代码语言:javascript
复制
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 

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

代码语言:javascript
复制
Test.assert_equals(correct("51NGAP0RE"),"SINGAPORE");

有没有人有关于如何使这成为一个更通用的功能,将工作的每一个字的技巧?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-04-13 15:51:26

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

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

代码语言:javascript
复制
string = string.replace('5', 'S').replace('0', 'O').replace('1', 'I')
票数 2
EN

Stack Overflow用户

发布于 2018-04-13 15:51:25

您可以直接使用str.replace

代码语言:javascript
复制
def correct(string):
    return string.replace('5','S').replace('0','O').replace('1','I')
票数 5
EN

Stack Overflow用户

发布于 2018-04-13 15:53:11

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

代码语言:javascript
复制
>>> "51NGAP0RE".translate(str.maketrans('501', 'SOI'))
'SINGAPORE'

包装在一个函数中:

代码语言:javascript
复制
def correct(s):
    return s.translate(str.maketrans('501', 'SOI'))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49820806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档