Parfois, lorsque nous travaillons avec des chaînes Python, nous pouvons avoir un problème dans lequel nous devons remplacer toutes les occurrences d'une sous-chaîne par d'autres.
Saisir : test_str = geeksforgeeks s1 = geeks s2 = abcd
Sortir : test_str = abcdforabcd Explication : Nous remplaçons toutes les occurrences de s1 par s2 dans test_str.
Saisir : test_str = geeksforgeeks s1 = pour s2 = abcd
Sortir : test_str = geeksabcdgeeks
Approche 1
Nous pouvons utiliser la fonction intégrée replace présente dans python3 pour remplacer toutes les occurrences de sous-chaîne.
Implémentation à l'aide de la fonction intégrée : -
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)> |
jquery en cliquant
>
>Sortir
abcdforabcd>
Complexité temporelle : Sur)
Espace auxiliaire : Sur)
Approche 2 :
Le fractionnement de la chaîne par sous-chaîne puis son remplacement par la nouvelle fonction string.split() sont utilisés.
Python3
Linux comment renommer un répertoire
#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> |
>
>Sortir
abcdforabcd>
La complexité temporelle et spatiale de toutes les méthodes est la même :
Complexité temporelle : Sur)
Espace auxiliaire : Sur)
Méthode 3 : Une autre approche pour remplacer toutes les occurrences d'une sous-chaîne dans une chaîne consiste à utiliser le re.sub() fonction du module 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))> |
>
>Sortir
abcdforabcd>
Complexité temporelle : O(n), où n est la longueur de la chaîne d'entrée. En effet, la fonction re.sub() parcourt toute la chaîne d'entrée et effectue une correspondance d'expression régulière sur chaque caractère pour trouver toutes les occurrences de la sous-chaîne. Le nombre d'itérations est directement proportionnel à la longueur de la chaîne d'entrée.
Espace auxiliaire :Nouveau
Méthode 4 : Utilisation d’une itération simple
L'idée derrière cette approche est de parcourir la chaîne d'entrée caractère par caractère et de vérifier si chaque sous-chaîne de longueur m correspond à la sous-chaîne que nous voulons remplacer. Si tel est le cas, nous ajoutons la sous-chaîne de remplacement à notre résultat et avançons le pointeur de m caractères. S'il ne correspond pas, nous ajoutons le caractère actuel au résultat et avançons le pointeur d'un caractère.
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))> |
>
convertir une chaîne en date
>Sortir
abcdforabcd>
Complexité temporelle : O(nm), où n est la longueur de la chaîne d'entrée et m est la longueur de la sous-chaîne à remplacer.
Espace auxiliaire : O(n), puisque nous créons une nouvelle chaîne pour stocker le résultat.