Python – Ersetzen Sie alle Vorkommen eines Teilstrings in einem String

Manchmal kann es bei der Arbeit mit Python-Strings zu einem Problem kommen, bei dem wir alle Vorkommen eines Teilstrings durch einen anderen ersetzen müssen.

Eingabe: test_str = geeksforgeeks s1 = geeks s2 = abcd
Ausgabe : test_str = abcdforabcd Erläuterung: Wir ersetzen alle Vorkommen von s1 durch s2 in test_str.

Eingabe: test_str = geeksforgeeks s1 = für s2 = abcd
Ausgabe : test_str = geeksabcdgeeks

Ansatz 1

Wir können die in Python3 integrierte Funktion „replace“ verwenden, um alle Vorkommen von Teilzeichenfolgen zu ersetzen.

Implementierung mit der eingebauten Funktion:-

Python3




#Python has inbuilt function replace to replace all occurrences of substring.> input_string> => 'geeksforgeeks'> s1> => 'geeks'> s2> => 'abcd'> input_string> => input_string.replace(s1, s2)> print> (input_string)>

Ausgabe

abcdforabcd 

Zeitkomplexität: An)
Hilfsraum: An)

Ansatz 2:

Es wird die Aufteilung der Zeichenfolge in Teilzeichenfolgen und das anschließende Ersetzen durch die neue Funktion string.split() verwendet.

Python3




#code for replacing all occurrences of substring s1 with new string s2> test_str> => 'geeksforgeeks'> s1> => 'geeks'> s2> => 'abcd'> #string split by substring> s> => test_str.split(s1)> new_str> => ''> for> i> in> s:> > if> (i> => => ''):> > new_str> +> => s2> > else> :> > new_str> +> => i> #printing the replaced string> print> (new_str)> #contributed by Bhavya Koganti>

Ausgabe

abcdforabcd 

Die zeitliche und räumliche Komplexität ist für alle Methoden gleich:

Zeitkomplexität: An)

Hilfsraum: An)

Methode 3: Ein anderer Ansatz zum Ersetzen aller Vorkommen eines Teilstrings in einem String ist die Verwendung von re.sub() Funktion aus dem re-Modul in Python.

Python3




import> re> def> replace_substring(test_str, s1, s2):> > # Replacing all occurrences of substring s1 with s2> > test_str> => re.sub(s1, s2, test_str)> > return> test_str> # test> test_str> => 'geeksforgeeks'> s1> => 'geeks'> s2> => 'abcd'> print> (replace_substring(test_str, s1, s2))>

Ausgabe

abcdforabcd 

Zeitkomplexität: O(n), wobei n die Länge der Eingabezeichenfolge ist. Dies liegt daran, dass die Funktion re.sub() die gesamte Eingabezeichenfolge durchläuft und für jedes Zeichen einen regulären Ausdrucksabgleich durchführt, um alle Vorkommen der Teilzeichenfolge zu finden. Die Anzahl der Iterationen ist direkt proportional zur Länge der Eingabezeichenfolge.
Hilfsraum: Neu

Methode 4: Einfache Iteration verwenden

Die Idee hinter diesem Ansatz besteht darin, die Eingabezeichenfolge Zeichen für Zeichen zu durchlaufen und zu prüfen, ob jede Teilzeichenfolge der Länge m mit der Teilzeichenfolge übereinstimmt, die wir ersetzen möchten. Wenn dies der Fall ist, fügen wir die Ersatzteilzeichenfolge zu unserem Ergebnis hinzu und bewegen den Zeiger um m Zeichen vorwärts. Wenn es nicht übereinstimmt, fügen wir das aktuelle Zeichen zum Ergebnis hinzu und bewegen den Zeiger um 1 Zeichen vorwärts.

Python3




def> replace_substring(test_str, s1, s2):> > # Initialize an empty string to store the result> > result> => ''> > # Initialize a variable to keep track of our position in the string> > i> => 0> > # Loop through the string one character at a time> > while> i <> len> (test_str):> > # Check if the current substring matches the substring we want to replace> > if> test_str[i:i> +> len> (s1)]> => => s1:> > # If it does, add the replacement substring to the result and move the pointer forward> > result> +> => s2> > i> +> => len> (s1)> > else> :> > # If it doesn't, add the current character to the result and move the pointer forward> > result> +> => test_str[i]> > i> +> => 1> > # Return the final result> > return> result> # test> test_str> => 'geeksforgeeks'> s1> => 'geeks'> s2> => 'abcd'> print> (replace_substring(test_str, s1, s2))>

Ausgabe

abcdforabcd 

Zeitkomplexität: O(nm), wobei n die Länge der Eingabezeichenfolge und m die Länge der zu ersetzenden Teilzeichenfolge ist.
Nebenraum: O(n), da wir eine neue Zeichenfolge erstellen, um das Ergebnis zu speichern.