2015-09-06 77 views
4

如何替換字符串中除第一個之外的所有重複單詞?也就是說這些字符串如何替換除第一個之外的所有事件?

s='cat WORD dog WORD mouse WORD' 
s1='cat1 WORD dog1 WORD' 

將被取代,以

s='cat WORD dog REPLACED mouse REPLACED' 
s1='cat1 WORD dog1 REPLACED' 

我不能replace the string backward,因爲我不知道有多少時間在每一行出現的單詞。我弄清楚了一種迂迴的方式:

temp=s.replace('WORD','XXX',1) 
temp1=temp.replace('WORD','REPLACED') 
ss=temp1.replace('XXX','WORD') 

但我想要一個更pythonic的方法。你有什麼主意嗎?

回答

5

使用rreplace

>>> def rreplace(s, old, new, occurrence): 
...  li = s.rsplit(old, occurrence) 
...  return new.join(li) 
... 
>>> a 
'cat word dog word mouse word' 
>>> rreplace(a, 'word', 'xxx', a.count('word') - 1) 
'cat word dog xxx mouse xxx' 
+0

感謝與一個string.count在一起。然而,「單詞」實際上是一組單詞,我用一個字典來替換它們,例如'對於i,j in dic.items():line = rreplace(line,i,j,line.count(i)-1)'。這不起作用 – Ooker

+0

請添加完整的代碼,輸入,輸出。什麼「不工作」? – luoluo

相關問題