2017-09-22 59 views
2

我知道下面是如何與另一個字符串我字符串替換特定的實例 - Python的

line.replace(x, y)

但我只想要替換x的第二個實例在該行替換字符串。你是怎樣做的? 謝謝

編輯 我想我可以問這個問題,而不進入具體問題,但不幸的是沒有答案在我的情況下工作。我正在寫入一個文本文件,並使用下面的一段代碼來更改文件。

with fileinput.FileInput("Player Stats.txt", inplace=True, backup='.bak') as file: 
    for line in file: 
     print(line.replace(chosenTeam, teamName), end='') 

但是如果選擇了團隊多次出現,那麼他們都被替換。 如何在這種情況下只替換第n個實例。

+0

可能有[如何替換在JavaScript中會出現一個字符串?](https://stackoverflow.com/questions/1144783/how-to-replace-all-occurrences-of-a-string-in-javascript) – Antimony

+0

雖然他的意思是python。 – oreofeolurin

+1

[用字符串替換第n個子字符串]的可能重複(https://stackoverflow.com/questions/35091557/replace-nth-occurrence-of-substring-in-string) – mentalita

回答

2

獎金,這是一個方法,以取代 「NTH」 發生在一個字符串

def nth_replace(str,search,repl,index): 
    split = str.split(search,index+1) 
    if len(split)<=index+1: 
     return str 
    return search.join(split[:-1])+repl+split[-1] 

例如:

nth_replace("Played a piano a a house", "a", "in", 1) # gives "Played a piano in a house" 
4

這實際上有點棘手。首先使用str.find獲得超出的索引第一次出現。然後切片並應用替換(計數爲1,以便只替換一次)。

>>> x = 'na' 
>>> y = 'banana' 
>>> pos = y.find(x) + 1 
>>> y[:pos] + y[pos:].replace(x, 'other', 1) 
'banaother' 
1

你可以試試這個:

​​