Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to replace all occurences except the first one?

How to replace all the repeated words except the first one in the string? That is these strings

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

will be replaced to

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

I can't replace the string backward because I don't know how many time the word occurs on each line. I do figure out a circuitous way:

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

But I want a more pythonic method. Do you have any idea?

like image 980
Ooker Avatar asked Sep 06 '15 10:09

Ooker


1 Answers

Use a string.count together with the 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'
like image 195
luoluo Avatar answered Sep 23 '22 15:09

luoluo