在字符串的子字符串之前插入一个字符串

14
我想在字符串中的子字符串前插入一些文本。
例如:
str = "thisissometextthatiwrote"
substr = "text"
inserttxt = "XX"

我想要:

str = "thisissomeXXtextthatiwrote"

假设 substr 只在 str 中出现一次,我该如何实现这个结果?有没有简单的方法可以做到这一点?


请看这个答案:https://dev59.com/K2865IYBdhLWcg3wCp9A#24450558 - CJ4
可能是重复的问题:如何在Python中给定索引处插入一些字符串到给定字符串中 - Dhinakaran Thennarasu
@DhinakaranThennarasu 这不是那个问题的重复,因为那个问题没有问如何找到子字符串的索引。 - GreenAsJade
4个回答

27
my_str = "thisissometextthatiwrote"
substr = "text"
inserttxt = "XX"

idx = my_str.index(substr)
my_str = my_str[:idx] + inserttxt + my_str[idx:]

提示:避免使用保留字(例如在你的情况下使用str)作为变量名。


16

为什么不使用replace

my_str = "thisissometextthatiwrote"
substr = "text"
inserttxt = "XX"

my_str.replace(substr, substr + inserttxt)
# 'thisissometextXXthatiwrote'

1
在Python中,.replace()返回字符串的副本,所以我猜应该是:new_str = my_str.replace(substr, substr + inserttxt) - Andrey Sherman
这很令人困惑,它用 textXX 替换了 text - alper

9
使用str.split(substr)将字符串分割为['thisissome','thatiwrote'],因为您想在子字符串之前插入一些文本,所以我们使用“XXtext”将它们连接在一起((inserttxt+substr))。
因此,最终的解决方案应该是:
>>>(inserttxt+substr).join(str.split(substr))
'thisissomeXXtextthatiwrote'

如果你想在一个子字符串之后添加一些文本,只需要进行替换:

>>>(substr+appendtxt).join(str.split(substr))
'thisissometextXXthatiwrote'

你能添加一个解释吗? - Robert
2
@Robert 使用 str.split(substr)str 分割成 ['thisissome', 'thatiwrote'],然后我们使用 "XXtext" ((inserttxt+substr)) 将它们连接起来。 - lord63. j

0
关于这个问题(其中´my_str´是变量),正确的答案是:
(inserttxt+substr).join(**my_str**.split(substr))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接