假设我有一个字符串:

x="AAAABBABAABCCABBCA"


并且我有以下信息:

AAA=1
ABB= ignore/remove from final output
ABA=2
ABC=3
CAB=4
BCA= ignore/remove from final output


所以当我翻译x时,输出y应该是:
                 y=1234

我试过了:

def fun(x):
    x=x.replace("AAA","1")
    x=x.replace("ABA","2")
    x=x.replace("ABB","")
    x=x.replace("ABC","3")
    x=x.replace("BCA","")
    x=x.replace("CAB","4")
    print x


但这给了我错误的答案:123CCA

我也尝试过:

def fun(x):
    z=[]
        for i in range(0,(len(x)+1)):
            if i=="AAA":
                i=i.replace("AAA",1)
        z.append(i)
        elif i=="ABA":
            i=i.replace("ABA",2)
    elif i=="ABB":
            i=i.replace("ABB","")
    elif i=="ABC":
            i=i.replace("ABC",3)
    elif i=="BCA":
            i=i.replace("BCA","")
    elif i=="CAB":
            i=i.replace("CAB","4")
        z.append(i)
    print ",".join(z)


但是语法有问题。

因此,主要问题是从头开始检查字符串并替换字符。
请帮我。

谢谢

最佳答案

这是一个在字符串上运行时将正确打印1234的解决方案:

x = "AAAABBABAABCCABBCA"
newstr = ''
for i in range(0,len(x),3):
    part = x[i:i + 3]
    if part == 'AAA':
        newstr += '1'
    elif part == 'ABA':
        newstr += '2'
    elif part == 'ABC':
        newstr += '3'
    elif part == 'CAB':
        newstr += '4'
print newstr


如果一个三个字符的序列不起作用,那么对其进行检查就没有多大意义了。只是静静地继续下一个。

如果您愿意使用str.replace替换代码中的这些字符串,则应查看可选的第三个参数count。如果将其限制为每个循环只能更换一次,则应达到所需的结果。

关于python - 如何使用Python替换字符串中的成对字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30923531/

10-12 22:19
查看更多