2014-10-11 52 views
0

我有一个字符串,例如:有一个元组列表的元素替换子

string = """ 
foobar_tent\n 
missyamica_ole 
""" 

这是一个元组的名单上有:

t = [("foo","virtue"), ("ole, "allo")] 

我试图取代每个实例每个元组的第一个元素与每个元组的第二个元素的关系。所以结果会是这样:

newstring = """ 
virtuebar_tent 
missyamica_allo 
"""" 

我试着做它是这样,但它不会改变任何东西。

newstring = "" 
for a,b in t: 
    newstring = string.replace(a,b) 

回答

1

你基本上是对的。主要问题是你每次都在做string.replace,所以只有列表中的最后一个替换才能工作。

newstring = string 
for a,b in t: 
    newstring = newstring.replace(a,b) 
1

newstring被替换的原始字符串在循环中被覆盖。

使用newstring.replace而不是string.replace,以便替换的字符串不会被覆盖。

>>> string = """ 
... foobar_tent 
... missyamica_ole 
... """ 
>>> t = [("foo", "virtue"), ("ole", "allo")] 
>>> 
>>> newstring = string # <----- 
>>> for a,b in t: 
...  newstring = newstring.replace(a,b) # <---- 
... 
>>> newstring 
'\nvirtuebar_tent\nmissyamica_allo\n' 
>>> print(newstring) 

virtuebar_tent 
missyamica_allo