我使用简单的函数,该函数列出所有出现的事件,选择第n个位置,并使用它将原始字符串分成两个子字符串。然后,它替换第二个子字符串中的第一个匹配项,并将子字符串连接回新的字符串中:
import redef replacenth(string, sub, wanted, n): where = [m.start() for m in re.finditer(sub, string)][n-1] before = string[:where] after = string[where:] after = after.replace(sub, wanted, 1) newString = before + after print(newString)
对于这些变量:
string = 'ababababababababab'sub = 'ab'wanted = 'CD'n = 5
输出:
ababababCDabababab
笔记:
该
where变量实际上是匹配项位置的列表,您可以在其中找到第n个。但是列表项索引0通常以开头,而不是以开头1。因此,有一个n-1索引,n变量是实际的第n个子字符串。我的示例找到第5个字符串。如果您使用nindex并想找到第5位,则需要n为4。您通常使用哪种功能取决于生成我们的函数n。这应该是最简单的方法,但可能不是最Python的方法,因为
where变量构造需要导入re库。也许有人会发现更多的Python方式。来源和一些链接:
*
where构造:如何查找所有出现的子串?
* 字符串分割:https : //www.daniweb.com/programming/software-
development/threads/452362/replace-nth-occurrence-of-any-sub-string-in-a-
string
*类似的问题:查找字符串中子字符串的第n次出现



