Python:替换字符串中的字符

时间:2017-11-10 05:50:59

标签: 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"))

1 个答案:

答案 0 :(得分:1)

def replacest1(string, st1, st2):
    return string.replace(st1, st2)

测试:

replacest1("abcdefdcba", "c", "x")

结果:

"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

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