簡體   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