Open In App

Python – Replace all occurrences of a substring in a string

Improve
Improve
Like Article
Like
Save
Share
Report

Sometimes, while working with Python strings, we can have a problem in which we need to replace all occurrences of a substring with other.

Input : test_str = “geeksforgeeks” s1 = “geeks” s2 = “abcd” 
Output : test_str = “abcdforabcd” Explanation : We replace all occurrences of s1 with s2 in test_str. 

Input : test_str = “geeksforgeeks” s1 = “for” s2 = “abcd” 
Output : test_str = “geeksabcdgeeks”

 Approach 1

We can use inbuilt function replace present in python3 to replace all occurrences of substring.

Implementation using the inbuilt function:-

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)


Output

abcdforabcd

Time Complexity: O(n)
Auxiliary Space: O(n)

Approach 2:

Splitting the string by substring and then replacing with the new string.split() function is used.

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


Output

abcdforabcd

The Time and Space Complexity for all the methods are the same:

Time Complexity: O(n)

Auxiliary Space: O(n)

Method 3: Another approach to replace all occurrences of a substring in a string is to use the re.sub() function from the re module in 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))


Output

abcdforabcd

Time Complexity: O(n), where n is the length of the input string. This is because the re.sub() function iterates through the entire input string and performs a regular expression match on each character to find all occurrences of the substring. The number of iterations is directly proportional to the length of the input string.
Auxiliary Space:New

Method 4: Using simple iteration

The idea behind this approach is to iterate through the input string character by character and check if each substring of length m matches the substring we want to replace. If it does, we add the replacement substring to our result and move the pointer forward by m characters. If it doesn’t match, we add the current character to the result and move the pointer forward by 1 character.

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


Output

abcdforabcd

Time complexity: O(nm), where n is the length of the input string and m is the length of the substring to be replaced. 
Auxiliary space: O(n), since we are creating a new string to store the result.



Last Updated : 10 Mar, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads