logo

Python – Ersätt alla förekomster av en delsträng i en sträng

Ibland, när vi arbetar med Python-strängar, kan vi ha ett problem där vi måste ersätta alla förekomster av en delsträng med andra.

Inmatning : test_str = nördar s1 = nördar s2 = abcd
Utgång: test_str = abcdforabcd Förklaring : Vi ersätter alla förekomster av s1 med s2 i test_str.



Inmatning : test_str = geeksforgeeks s1 = för s2 = abcd
Utgång: test_str = geeksabcdgeeks

Tillvägagångssätt 1

Vi kan använda den inbyggda funktionen ersätt som finns i python3 för att ersätta alla förekomster av delsträng.



Implementering med den inbyggda funktionen:-

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

intern drift av hashmap
abcdforabcd>

Tidskomplexitet: På)
Hjälputrymme: På)

Tillvägagångssätt 2:

Dela strängen efter delsträng och sedan ersätta den med den nya funktionen string.split() används.

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- och rumskomplexiteten för alla metoder är densamma:

Tidskomplexitet: På)

Hjälputrymme: På)

Metod 3: Ett annat sätt att ersätta alla förekomster av en delsträng i en sträng är att använda re.sub() funktion från re-modulen i python.

Python3


arraylistmetoder



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>

Tidskomplexitet: O(n), där n är längden på inmatningssträngen. Detta beror på att funktionen re.sub() itererar genom hela inmatningssträngen och utför en matchning av reguljära uttryck på varje tecken för att hitta alla förekomster av delsträngen. Antalet iterationer är direkt proportionellt mot längden på inmatningssträngen.
Hjälputrymme: Nytt

Metod 4: Använd enkel iteration

Tanken bakom detta tillvägagångssätt är att iterera genom inmatningssträngen tecken för tecken och kontrollera om varje delsträng med längden m matchar delsträngen vi vill ersätta. Om den gör det lägger vi till ersättningsdelsträngen till vårt resultat och flyttar pekaren framåt med m tecken. Om det inte matchar lägger vi till det aktuella tecknet till resultatet och flyttar pekaren framåt med 1 tecken.

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>

Tidskomplexitet: O(nm), där n är längden på inmatningssträngen och m är längden på delsträngen som ska ersättas.
Extra utrymme: O(n), eftersom vi skapar en ny sträng för att lagra resultatet.