logo

Python: reemplaza todas las apariciones de una subcadena en una cadena

A veces, mientras trabajamos con cadenas de Python, podemos tener un problema en el que necesitamos reemplazar todas las apariciones de una subcadena por otra.

Aporte : test_str = geeksforgeeks s1 = geeks s2 = abcd
Producción : test_str = abcdforabcd Explicación: Reemplazamos todas las apariciones de s1 con s2 en test_str.



Aporte : test_str = geeksforgeeks s1 = para s2 = abcd
Producción : test_str = geeksabcdgeeks

Enfoque 1

Podemos usar la función incorporada reemplazar presente en python3 para reemplazar todas las apariciones de subcadenas.



Implementación utilizando la función incorporada: -

Python3




objeto en programación 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)>

>

>

Producción

abcdforabcd>

Complejidad del tiempo: En)
Espacio Auxiliar: En)

Enfoque 2:

Se utiliza dividir la cadena por subcadena y luego reemplazarla con la nueva función string.split().

Python3


np.clip



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

>

>

Producción

autómatas finitos deterministas
abcdforabcd>

La complejidad temporal y espacial de todos los métodos es la misma:

Complejidad del tiempo: En)

Espacio Auxiliar: En)

Método 3: Otro enfoque para reemplazar todas las apariciones de una subcadena en una cadena es usar el re.sub() función desde el módulo re en 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))>

>

>

Producción

topologías
abcdforabcd>

Complejidad del tiempo: O(n), donde n es la longitud de la cadena de entrada. Esto se debe a que la función re.sub() recorre en iteración toda la cadena de entrada y realiza una coincidencia de expresión regular en cada carácter para encontrar todas las apariciones de la subcadena. El número de iteraciones es directamente proporcional a la longitud de la cadena de entrada.
Espacio Auxiliar:Nuevo

Método 4: usar iteración simple

La idea detrás de este enfoque es iterar a través de la cadena de entrada carácter por carácter y verificar si cada subcadena de longitud m coincide con la subcadena que queremos reemplazar. Si es así, agregamos la subcadena de reemplazo a nuestro resultado y movemos el puntero hacia adelante m caracteres. Si no coincide, agregamos el carácter actual al resultado y avanzamos el puntero 1 carácter.

Python3




características de java 8
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))>

>

>

Producción

abcdforabcd>

Complejidad del tiempo: O (nm), donde n es la longitud de la cadena de entrada y m es la longitud de la subcadena que se va a reemplazar.
Espacio auxiliar: O(n), ya que estamos creando una nueva cadena para almacenar el resultado.