logo

Python: substitueix totes les ocurrències d'una subcadena en una cadena

De vegades, mentre treballem amb cadenes de Python, podem tenir un problema en què hem de substituir totes les ocurrències d'una subcadena per una altra.

Entrada: test_str = geeksforgeeks s1 = geeks s2 = abcd
Sortida: test_str = abcdforabcd Explicació: substituïm totes les ocurrències de s1 per s2 a test_str.



Entrada: test_str = geeksforgeeks s1 = per a s2 = abcd
Sortida: test_str = geeksabcdgeeks

Enfocament 1

Podem utilitzar la funció incorporada substituir present a python3 per substituir totes les ocurrències de la subcadena.



Implementació mitjançant la funció integrada: -

Python 3






impressió java
#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)>

comanda zip a linux
>

>

Sortida

abcdforabcd>

Complexitat temporal: O(n)
Espai auxiliar: O(n)

Enfocament 2:

S'utilitza la divisió de la cadena per subcadenes i després la substitució per la nova funció string.split().

Python 3




#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>

>

>

Sortida

abcdforabcd>

La complexitat temporal i espacial de tots els mètodes és la mateixa:

com executar un script a linux

Complexitat temporal: O(n)

Espai auxiliar: O(n)

Mètode 3: Un altre enfocament per substituir totes les ocurrències d'una subcadena en una cadena és utilitzar el re.sub() funció del mòdul re a Python.

Python 3




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))>

>

>

Sortida

comentari xml
abcdforabcd>

Complexitat temporal: O(n), on n és la longitud de la cadena d'entrada. Això es deu al fet que la funció re.sub() itera per tota la cadena d'entrada i realitza una coincidència d'expressió regular a cada caràcter per trobar totes les ocurrències de la subcadena. El nombre d'iteracions és directament proporcional a la longitud de la cadena d'entrada.
Espai auxiliar: Nou

Mètode 4: Ús d'iteració simple

La idea darrere d'aquest enfocament és iterar a través de la cadena d'entrada caràcter per caràcter i comprovar si cada subcadena de longitud m coincideix amb la subcadena que volem substituir. Si ho fa, afegim la subcadena de substitució al nostre resultat i movem el punter cap endavant amb m caràcters. Si no coincideix, afegim el caràcter actual al resultat i avancem el punter 1 caràcter.

Python 3




mètode principal java
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))>

>

>

Sortida

abcdforabcd>

Complexitat temporal: O(nm), on n és la longitud de la cadena d'entrada i m és la longitud de la subcadena que s'ha de substituir.
Espai auxiliar: O(n), ja que estem creant una nova cadena per emmagatzemar el resultat.