Python 如果找到,请插入子字符串
我得到了一个Python中的字符串Python 如果找到,请插入子字符串,python,string,Python,String,我得到了一个Python中的字符串my_str。我想做的是:如果my_str包含一个子字符串str1,那么在子字符串str1之后插入一个字符串str2(并保持my_str的其余部分完好无损)。否则,什么也不做。(假设my_str只包含一个子字符串str1) 我的想法是:做一个for循环,找出mystr中是否存在str1 for i in range(0, len(my_str)-len(str1)): if my_str[i:i+len(str1)] == str1: my_str
my_str
。我想做的是:如果my_str
包含一个子字符串str1
,那么在子字符串str1
之后插入一个字符串str2
(并保持my_str
的其余部分完好无损)。否则,什么也不做。(假设my_str
只包含一个子字符串str1
)
我的想法是:做一个for循环,找出mystr
中是否存在str1
for i in range(0, len(my_str)-len(str1)):
if my_str[i:i+len(str1)] == str1:
my_str = my_str[0:i] + str2 + my_str[i:]
我很好奇是否有什么神奇的方法可以缩短时间。最简单的方法是使用
str.replace()
:
我们只需将原始值替换为附加到其自身的新字符串,本质上就是插入新值
有关更多示例,请参阅replace()
def myReplace(myStr, str1, str2):
try:
i = myStr.index(str1)
answer = myStr[:i+len(str1)] + str2 + myStr[i+len(str1):]
return answer
except ValueError:
return myStr
希望这有帮助不要命名变量
str
或文件
或dict
或set
或列表
,etc@inspectorG4dget谢谢编辑:)诚实的问题-这样做比使用内置替换方法有什么好处?@Anov:内置替换是我通常使用的方法。因为OP似乎是个初学者,所以我给出了一个更接近他想要实现的答案。我想在我的答案中使用replace
方法来完成此操作,但当我完成此解决方案的编写时,我注意到其他人已经发布了该方法。@Inspectorg4Get in认为您使用了try except来处理ValueError
,如果是这种情况,请使用str.find()
,如果未找到子字符串,则返回-1。OP的版本将用str1+str2
替换str1
的每个实例;你的只会取代第一个。OP说“假设我的_str只包含一个子串str1”,但值得指出区别。使用replace
,您可以通过1
进行count
,也可以不进行。您也可以通过添加一个循环并将i+1
作为start
传递给每个索引
/find
调用来使用此解决方案。
def myReplace(myStr, str1, str2):
try:
i = myStr.index(str1)
answer = myStr[:i+len(str1)] + str2 + myStr[i+len(str1):]
return answer
except ValueError:
return myStr