假设我有一个字符串:
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。如果将其限制为每个循环的单个替换,您应该会获得所需的结果。
