Python:替换字符串中的字符

2024-10-03 06:22:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我该如何调整下面的函数,以便如果分配给st1的变量根本没有出现在字符串中(1不出现在字符串中,字符串是*********)),那么该函数只返回字符串(*********),但是如果字符串包含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"))

Tags: 函数字符串inforstringreturnifdef
1条回答
网友
1楼 · 发布于 2024-10-03 06:22:01
def replacest1(string, st1, st2):
    return string.replace(st1, st2)

测试:

^{pr2}$

结果:

"abxdefdxba"

测试:

replacest1("yyyyzzzz", "c", "x")

结果:

"yyyyzzzz"

或者更好:

"abcdefdcba".replace("c", "x")

请注意,上面定义的函数与问题要求的函数是1:1的对应关系。使用string作为标识符是一个很好的做法。我强烈建议不要使用这种标识符。在


注意:由于这样一个函数的定义可以完全消除,因为string.replace()仍然存在,而它被弃用,因此上面的解决方案仍然包含问题中使用的标识符string。如果这个函数不能被删除,我会在这里使用一个不同的标识符,但是由于定义一个自己的函数根本不需要,所以我让这个标识符保持原样。


以下是如何在不使用string.replace()的情况下实现该功能的变体:

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

注意:我更喜欢使用断言来检测编程错误。如果性能在您的用例中不是一个大问题,这些断言不会引起任何麻烦,但是可以防止意外地误用这样的函数:如果您不小心传递了错误的参数,断言将失败并立即给您反馈。在

相关问题 更多 >