假设我有一个字符串:
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/