Python:用子串替换任意子串

时间:2016-08-17 22:14:17

标签: python string indexing slice

很抱歉,如果以前曾经问过这个问题,但我已经在这几周内一直在努力。

我正在试图找出如何用任何特定的子字符串替换任意字符串中的特定子字符串。

IE:

如果我让用户键入一个任意字符串,我想用“UOP”替换任何“MAA”实例。

我的代码:

cstring = input("Enter a character string: ")


for i in cstring:
    if ((i != 'M') and (i != 'U') and (i != 'I')):
        break
    else:
        if (cstring[-1] == 'I'):
            cstring = cstring + 'U'
        if (cstring[:1] == 'M'):
            cstring = cstring + cstring[1:]
        if ('III' in cstring):
            cstring = cstring[:i] + "U" + cstring[i:]
        if ('UU' in cstring):
            cstring = cstring[:i] + '' + cstring[i:]
        break
print(cstring)

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用String replace方法,如下所示:

cstring.replace("MAA,"UOP")

但是,如果您想自己编写代码,可以使用:

cstring = input("Enter a character string: ")


for i in range (0, len(cstring)):
    if (len(cstring[i:]) >= 3 and cstring[i] == "M" and cstring[i+1] == "A" and cstring[i+2] == "A"):
        cstring = cstring[:i] + "UOP" + cstring[i+3:]
print(cstring)

答案 1 :(得分:0)

正如其他用户所说,您可以使用str.replace。以下是其他一些选择:

正则表达式

这可能是要走的路,因为你可以用替换字符串替换任何正则表达式,并具有各种重新标记的所有优点。

import re
re.sub("MAA", "UOP", cstring)

验证输入字符串

如果您的最终目标是使用带有一些简单替换的字符串,您也可以尝试在输入级别强制执行此操作。即。

cstring = input("Enter a valid character string: ")
while bool(re.search("invalid_characters_regex", cstring)):
    print("Your input contained invalid characters, please try again.")
    cstring = input("Enter a valid character string: ")