2014-09-19 36 views
-1

我有一個文本與幾個網站的事件,讓我們說「www.test.com」。我想,以取代所有這些事件由「website_NR」,其中NR應在1已找到發生後增加整數

例子開始:

text = "bbsjsddh www.test.com shduh sudhuhd sjdjsdh wiowqiuedl www.test.de uasuisdhckjdfh www.test.de sudhdhdhfh" 

現在,每一次出現「www.test.com」應「WEBSITE_1取代」, 「WEBSITE_2」,等等...

我試了一下:

n = 0 
if 'www.test.com' in text: 
     n = n+1 
text = text.replace('www.test.com', 'website_'+str(n)) 

但是......這個方法只計算第一次出現的 「www.test.com」

+0

好吧......如果你想要做的事不止一次,你將需要寫一個循環。 – geoffspear 2014-09-19 12:28:51

+0

.count爲您提供出現次數(n),然後替換n次 – dwana 2014-09-19 12:33:52

回答

0

下面的代碼函數將一次替換oldnew + '_{}'.format(n),而old在您的字符串中。它也爲每個迭代增加n等你拿「WEBSITE_1」,「WEBSITE_2」等

def func(s, old, new): 
    n = 1 
    while old in s: 
     s = s.replace(old, new + '_{}'.format(n), 1) 
     n += 1 

    return s 

text = "bbsjsddh www.test.com shduh sudhuhd sjdjsdh wiowqiuedl www.test.com uasuisdhckjdfh www.test.com sudhdhdhfh" 

print(func(text, 'www.test.com', 'website')) 
# bbsjsddh website_1 shduh sudhuhd sjdjsdh wiowqiuedl website_2 uasuisdhckjdfh website_3 sudhdhdhfh