替换string-Python中的特定实例

替换string-Python中的特定实例,python,string,replace,Python,String,Replace,我知道下面是如何用另一个字符串I替换一个字符串 行。替换(x,y) 但我只想替换行中x的第二个实例。你是怎么做到的? 谢谢 编辑 我原以为我可以问这个问题而不必详细说明,但不幸的是,这些答案在我的情况下都不起作用。我正在写入一个文本文件,并使用下面的代码更改该文件 with fileinput.FileInput("Player Stats.txt", inplace=True, backup='.bak') as file: for line in file: prin

我知道下面是如何用另一个字符串I替换一个字符串

行。替换(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='')
但是,如果chosenTeam多次出现,那么所有这些都将被替换。
在这种情况下,如何仅替换第n个实例。

这实际上有点棘手。首先使用
str.find
获取超出第一次出现的索引。然后切片并应用替换(计数为1,以便仅替换一个引用)


另外,这是一种替换字符串中出现的“n”的方法

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]
您可以尝试以下方法:

import itertools
line = "hello, hi hello how are you hello"
x = "hello"
y = "something"
new_data = line.split(x)
new_data = ''.join(itertools.chain.from_iterable([(x, a) if i != 2 else (y, a) for i, a in enumerate(new_data)]))

他指的是python,可能是
nth_replace("Played a piano a a house", "a", "in", 1) # gives "Played a piano in a house"
import itertools
line = "hello, hi hello how are you hello"
x = "hello"
y = "something"
new_data = line.split(x)
new_data = ''.join(itertools.chain.from_iterable([(x, a) if i != 2 else (y, a) for i, a in enumerate(new_data)]))