Python – Erstat alle forekomster af en understreng i en streng
Nogle gange, mens vi arbejder med Python-strenge, kan vi have et problem, hvor vi skal erstatte alle forekomster af en understreng med andre.
Input: test_str = nørder s1 = nørder s2 = abcd
Output: test_str = abcdforabcd Forklaring: Vi erstatter alle forekomster af s1 med s2 i test_str.Input: test_str = geeksforgeeks s1 = for s2 = abcd
Output: test_str = geeksabcdgeeks
tilgang 1
Vi kan bruge den indbyggede funktion erstatte til stede i python3 til at erstatte alle forekomster af understreng.
Implementering ved hjælp af den indbyggede 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)> |
Produktion
abcdforabcd
Tidskompleksitet: På)
Hjælpeplads: På)
Fremgangsmåde 2:
Opdeling af strengen efter understreng og derefter udskiftning med den nye string.split()-funktion bruges.
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> |
Produktion
abcdforabcd
Tids- og rumkompleksiteten for alle metoderne er den samme:
Tidskompleksitet: På)
Hjælpeplads: På)
Metode 3: En anden tilgang til at erstatte alle forekomster af en understreng i en streng er at bruge re.sub() funktion fra re-modulet i 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))> |
Produktion
abcdforabcd
Tidskompleksitet: O(n), hvor n er længden af inputstrengen. Dette skyldes, at funktionen re.sub() itererer gennem hele inputstrengen og udfører et regulært udtryksmatch på hvert tegn for at finde alle forekomster af understrengen. Antallet af iterationer er direkte proportionalt med længden af inputstrengen.
Hjælpeplads: Nyt
Metode 4: Brug simpel iteration
Ideen bag denne tilgang er at gentage inputstrengen karakter for tegn og kontrollere, om hver delstreng med længden m matcher den delstreng, vi ønsker at erstatte. Hvis det gør det, tilføjer vi erstatningsunderstrengen til vores resultat og flytter markøren frem med m tegn. Hvis det ikke matcher, tilføjer vi det aktuelle tegn til resultatet og flytter markøren frem med 1 tegn.
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))> |
Produktion
abcdforabcd
Tidskompleksitet: O(nm), hvor n er længden af inputstrengen, og m er længden af understrengen, der skal erstattes.
Hjælpeplads: O(n), da vi opretter en ny streng for at gemme resultatet.