Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果找到,请插入子字符串_Python_String - Fatal编程技术网

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

我得到了一个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[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