[英]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.