2014-10-11 49 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