替换字符串中的特定实例 - Python

时间:2017-09-22 17:39:15

标签: python string replace

我知道以下是如何用另一个字符串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个实例。

3 个答案:

答案 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)]))