我知道以下是如何用另一个字符串i
替换字符串 line.replace(x, y)
但我只想替换行中的第二个x实例。你是怎样做的? 感谢
EDIT 我想我可以在没有详细说明的情况下提出这个问题,但遗憾的是,在我的情况下,没有一个答案有效。我正在写入文本文件,并使用以下代码更改文件。
with fileinput.FileInput("Player Stats.txt", inplace=True, backup='.bak') as file:
for line in file:
print(line.replace(chosenTeam, teamName), end='')
但是如果selectedTeam多次出现,那么所有这些都会被替换掉。 如何在这种情况下只替换第n个实例。
答案 0 :(得分:4)
这实际上有点棘手。首先使用str.find
在第一次出现时获取超出的索引。然后切片并应用替换(使用计数1,以便仅替换一次)。
>>> x = 'na'
>>> y = 'banana'
>>> pos = y.find(x) + 1
>>> y[:pos] + y[pos:].replace(x, 'other', 1)
'banaother'
答案 1 :(得分: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"
答案 2 :(得分: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)]))