Python:替换字符串中的字符
我如何调整以下函数,以便在分配给st1的变量根本不出现在string中时(1不出现在string中,并且字符串是Python:替换字符串中的字符,python,Python,我如何调整以下函数,以便在分配给st1的变量根本不出现在string中时(1不出现在string中,并且字符串是**********),该函数只返回字符串(**********)),但如果字符串确实包含1,则按如下所述将每个1替换为2。谢谢你的帮助 def replacest1(string,st1,st2): for i in string: if i == st1: N_W = string.replace(st1 , st2) return N_W
**********)
,该函数只返回字符串(**********)
),但如果字符串确实包含1,则按如下所述将每个1替换为2。谢谢你的帮助
def replacest1(string,st1,st2):
for i in string:
if i == st1:
N_W = string.replace(st1 , st2)
return N_W
print(replacest1("***1***1***","1","2"))
测试:
结果:
"abxdefdxba"
"yyyyzzzz"
测试:
结果:
"abxdefdxba"
"yyyyzzzz"
或者更好:
"abcdefdcba".replace("c", "x")
请注意,上面定义的函数与问题要求的函数是1:1对应关系。使用string
作为标识符是而不是的好做法。我强烈建议不要使用此类标识符
注意:由于此类函数的定义可以完全取消,因为
string.replace()
仍然存在,尽管它已被弃用,上述解决方案仍将包含问题中使用的标识符string
。如果函数不能被消除,我会在这里使用不同的标识符,但是因为定义自己的函数根本没有必要,所以我现在就让这个标识符保持原样
下面是如何在不使用
string.replace()
的情况下实现该功能的一个变体:
注意:我更喜欢使用断言来检测编程错误。如果性能在您的用例中不是一个大问题,那么这些断言不会造成任何问题,但可以防止意外误用这样的函数:如果您意外地传递了错误的参数,那么断言将失败并立即向您提供反馈。我不确定您是否需要函数。给定三个字符串,
foo
、tok
和rep
,只需使用foo即可。replace(tok,rep)
将返回foo
,并将tok
的所有实例替换为rep
。如果foo
不包含tok
的实例,它将只返回原始字符串foo
。此外,我认为for循环是不必要的(可能给您带来了最大的麻烦)。如果字符串不包含st1,我们只返回string.BTW,string
不是变量名的好选择:它是标准模块的名称。@PM2Ring:是的,我正要这么说。不要这样选择标识符,这一点非常重要。您是否可以将字符串
参数重命名为源字符串
?我真的以为你一开始是在调用不推荐的函数。是的,你是对的。我正在使用不推荐使用的字符串替换。它仍然存在,尽管它似乎不再被记录。我会再次更新答案。现在应该更好了。
"abcdefdcba".replace("c", "x")
def replaceCharacters(inputString, findChar, replaceChar):
assert isinstance(inputString, str)
assert isinstance(findChar, str)
assert len(findChar) == 1
assert isinstance(replaceChar, str)
assert len(replaceChar) == 1
buffer = ""
for c in inputString:
buffer += replaceChar if c == findChar else c
return buffer