我想替换字符串中第n个出现的子字符串。
一定有什么我想做的事情是
mystring.replace("substring", 2nd)
最简单,最Python化的方法是什么?
为什么不重复:
我不想在这种方法中使用正则表达式,而我发现的类似问题的大多数答案只是正则表达式剥离或真正复杂的功能。我真的想要尽可能简单而不是正则表达式的解决方案。
我使用简单的函数,该函数列出所有出现的事件,选择第n个位置,并使用它将原始字符串分成两个子字符串。然后,它替换第二个子字符串中的第一个匹配项,并将子字符串连接回新的字符串中:
import re
def 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个字符串。如果您使用n
index并想找到第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次出现
问题内容: 我有一个字符串,它是html页面的完整内容,我正在尝试查找的第二次出现的索引。有人对如何实现这一目标有任何建议吗? 问题答案: 这是一个好玩的镜头;)
给定一个包含项a和B的字符串M,我想用每个a来代替B,用每个B来代替a来代替M'。天真地,人们会尝试用B代替A,然后用A代替B,但在这种情况下,M'只包含A。我可以想到替换这些项,并记录它们的位置,这样这些项就不会再被替换了。当我们只有A和B可以替换时,这是有效的。但是如果我们需要替换两个以上的项,而且它们的长度不同,那么这就变得很棘手了。 所以我想这样做: 我们将M作为输入字符串,并将R=[(x
本文向大家介绍替换Java字符串中的子字符串,包括了替换Java字符串中的子字符串的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 我们想将子字符串“ Dead”替换为“ Alive”。为此,让我们使用以下逻辑。在这里,我们使用了while循环,并在其中找到了要替换的子字符串的索引。这样,我们一个接一个地替换了整个子字符串。 以下是替换子字符串的完整示例。 示例 输出结果
问题内容: 我有一些示例字符串。如何用空字符串替换长字符串中第一次出现的该字符串? 问题答案: 字符串replace()函数可以完美解决此问题: string.replace(s,old,new [,maxreplace]) 返回字符串s的副本,其中所有出现的子字符串old都替换为new。如果给出了可选参数maxreplace,则替换第一个出现的maxreplace。
问题内容: 有谁知道用一个字符串中的另一个字符串替换最后一个出现的字符串的快速方法? 问题答案: 您可以使用此功能:
问题内容: 我想替换列中的子字符串 到。 需求输出 我尝试,但它返回。 问题答案: 使用与更换和: