2

私はmy_strPythonで文字列を与えられています。私がやりたいことは次のとおりです。my_strサブストリングが含まれている場合、サブストリングの直後にstr1文字列を挿入します(残りはそのままにしておきます)。それ以外の場合は何もしません。(である部分文字列が 1 つしか含まれていないとしましょう。)str2str1my_strmy_strstr1

私が考えている方法は次のとおりです。forループを実行して、str1内に存在するかどうかを確認しますmy_str

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:]

これを短くできる魔法の方法があるかどうか興味があります。

4

2 に答える 2

8

最も簡単な方法は次のstr.replace()とおりです。

>>> str1 = "blah"
>>> str2 = "new"
>>> "testblah".replace(str1, str1+str2)
'testblahnew'
>>> "testblahtest".replace(str1, str1+str2)
'testblahnewtest'
>>> "test".replace(str1, str1+str2)
'test'
>>> "blahtestblah".replace(str1, str1+str2)
'blahnewtestblahnew'

元の値を、それ自体に追加された新しい文字列に置き換えるだけで、基本的に新しい値を挿入します。

その他の例については、replace()に関する簡単なチュートリアル。

于 2012-11-28T20:30:11.317 に答える
1
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

お役に立てれば

于 2012-11-28T20:32:18.147 に答える