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.