[英]How to replace the right letters in a string python
作業是:
您的任務是更正數字化文本中的錯誤。 您只需要處理以下錯誤:
我的代碼:
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.maketrans
和str.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.