Python – Add space between Numbers and Alphabets in String
In this article, we delve into a practical Python solution to improve text readability by adding spaces between numbers and alphabets in strings by utilizing Python‘s powerful string manipulation capabilities.
Input: test_str = 'ge3eks4Beginner is1for10Beginner' Output: ge 3 eks 4 Beginner is 1 for 10 Beginner Explanation: Numbers separated from Characters.
Adding Spaces between Numbers and Alphabets in Python
Below is the lists of methods that we can use to solve the following problem:
- Using replace() method.
- Using isdigit() and replace() methods
- Using list comprehension
- Using regex with lambda
- Using regex with sub()
- Using isdigit and isalpha methods
- Using ord() and replace() methods
- Using regular expressions and re.sub() method
- Using Recursive method
- Using group by
Add space between Numbers and Alphabets Using replace() method
When u find a numeric character within a string replace that character with a space appended on the left and right.
Python3
# initializing string test_str = 'ge3eks4Beginner' # printing original String print ( "The original string is : " + str (test_str)) num = "0123456789" for i in test_str: if i in num: test_str = test_str.replace(i, " " + i + " " ) res = test_str # printing result print ( "The space added string : " + str (res)) |
The original string is : ge3eks4Beginner The space added string : ge 3 eks 4 Beginner
Time Complexity: O(n)
Auxiliary Space: O(n)
Add space between Numbers and Alphabets using isdigit() and replace() methods
Here we use isdigit()
the method to identify numeric characters and then we use replace()
method to replace the value with the desired space needed.
Python3
# initializing string test_str = 'ge3e1ks4Beginner' # printing original String print ( "The original string is : " + str (test_str)) for i in test_str: if i.isdigit(): test_str = test_str.replace(i, " " + i + " " ) res = test_str # printing result print ( "The space added string : " + str (res)) |
The original string is : ge3e1ks4Beginner The space added string : ge 3 e 1 ks 4 Beginner
Time complexity : O(n), where n is length of test_str
Auxiliary space: O(n), where n is the length of the res string.
Inserting space between numbers and letters using List Comprehension
In this, we use list comprehension to add space between numbers and alphabets
Python3
test_str = 'ge3e1ks4Beginner' # printing original String print ( "The original string is : " + str (test_str)) res = " ".join([" "+i + " " if i.isdigit() else i for i in test_str]) # printing result print ( "The space added string : " + str (res)) |
The original string is : ge3e1ks4Beginner The space added string : ge 3 e 1 ks 4 Beginner
Time Complexity: O(n)
Auxiliary Space: O(n)
Inserting space between number and letter using Regex with Lambda
In this, we perform the task of finding alphabets by appropriate regex, and then sub() is used to do replacements, and lambda does the task of adding spaces in between.
Python3
import re # initializing string test_str = 'Beginner4Beginner is1for10Beginner' # printing original String print ( "The original string is : " + str (test_str)) # using sub() to solve the problem, lambda used to add spaces res = re.sub( "[A-Za-z]+" , lambda ele: " " + ele[ 0 ] + " " , test_str) # printing result print ( "The space added string : " + str (res)) |
The original string is : Beginner4Beginner is1for10Beginner The space added string : Beginner 4 Beginner is 1 for 10 Beginner
Time Complexity: O(n), where n is the length of the input string.
Space Complexity: O(n), where n is the length of the input string.
Inserting space between number and letter using regex with sub()
In this, we look for numerics rather than alphabets to perform the task of segregation, a similar approach by using numerics are search criteria to add spaces.
Python3
import re # initializing string test_str = 'Beginner4Beginner is1for10Beginner' # printing original String print ( "The original string is : " + str (test_str)) # using sub() to solve the problem, lambda used to add spaces res = re.sub( '(\d+(\.\d+)?)' , r ' \1 ' , test_str) # printing result print ( "The space added string : " + str (res)) |
The original string is : Beginner4Beginner is1for10Beginner The space added string : Beginner 4 Beginner is 1 for 10 Beginner
Time Complexity: O(n), where n is the length of the input string.
Space Complexity: O(n), where n is the length of the input string.
Add Space between numbers and letters using isdigit and isalpha methods
Initialize a test string and an empty result string. Print the original string then loop through the test string character by character using a for loop. For each character in the test string, check if the current character is a digit and the previous character is an alphabet If the conditions in step 4 are true, add a space to the result string then check if the current character is an alphabet and the previous character is a digit if the conditions in step 6 are true, add a space to the result string then add the current character to the result string and print the result string.
Python3
test_str = 'Beginner4Beginner is1for10Beginner' result = '' # printing original String print ( "The original string is : " + str (test_str)) # loop through the test string character by character for i in range ( len (test_str)): # check if the current character is a digit and the previous character is an alphabet if test_str[i].isdigit() and result and result[ - 1 ].isalpha(): # if so, add a space to the result string result + = ' ' # check if the current character is an alphabet and the previous character is a digit elif test_str[i].isalpha() and result and result[ - 1 ].isdigit(): # if so, add a space to the result string result + = ' ' # add the current character to the result string result + = test_str[i] print (result) |
The original string is : Beginner4Beginner is1for10Beginner Beginner 4 Beginner is 1 for 10 Beginner
Time complexity: O(n), where n is the length of the input string.
Space complexity: O(n), where n is the length of the input string.
Add Space between numbers and letters using ord() and replace() methods
Check whether the character is a digit using ord() and then replace the digit in a string by adding space front and back to that digit then display the replaced string
Python3
# initializing string test_str = 'ge3eks4Beginner' # printing original String print ( "The original string is : " + str (test_str)) digs = [ 48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 ] for i in test_str: if ord (i) in digs: test_str = test_str.replace(i, " " + i + " " ) res = test_str # printing result print ( "The space added string : " + str (res)) |
The original string is : ge3eks4Beginner The space added string : ge 3 eks 4 Beginner
Time Complexity : O(n)
Auxiliary Space: O(n)
Inserting space between number and letter using regular expressions and re.sub()
We initialize the input string “test_str” with the given string “ge3eks4Beginner” and then use the re.sub() method to search for a pattern of one or more digits in the input string. The pattern is defined using the regular expression ‘(\d+)’, which matches one or more digits. The second argument to the re.sub() method is a replacement string. Here, we use r’ \1 ‘ as the replacement string, which adds a space before and after the matched digits. Finally, the re.sub() method returns the modified string “res”.
Python3
import re # initializing string test_str = 'ge3eks4Beginner' # printing original String print ( "The original string is : " + str (test_str)) # Using regular expressions to add space between numbers and alphabets. res = re.sub( '(\d+)' , r ' \1 ' , test_str) # printing result print ( "The space added string : " + str (res)) |
The original string is : ge3eks4Beginner The space added string : ge 3 eks 4 Beginner
Time complexity: O(n), where n is the length of the input string “test_str”. The regular expression matching takes linear time in the length of the string.
Auxiliary space: O(n), as we create a new string “res” to store the modified string.
Inserting space between number and letter using the Recursive method
If the input string test_str is empty, return an empty string. If the first character of test_str is a digit, add a space before and after the digit, and then recursively call the function on the remaining string. If the first character is not a digit, simply append it to the result of the recursive call on the remaining string. Return the result.
Python3
def add_space_recursive(test_str): if not test_str: return "" elif test_str[ 0 ].isdigit(): return " " + test_str[ 0 ] + " " + add_space_recursive(test_str[ 1 :]) else : return test_str[ 0 ] + add_space_recursive(test_str[ 1 :]) test_str = 'ge3eks4Beginner' print ( "The original string is : " + str (test_str)) result = add_space_recursive(test_str) print ( "The space added string : " + str (result)) |
The original string is : ge3eks4Beginner The space added string : ge 3 eks 4 Beginner
Time complexity: O(n), where n is the length of the input string test_str.
Space complexity: O(n), where n is the length of the input string test_str.
Inserting space between number and letter using group by
Initialize an empty list to store the groups. Use a for loop to iterate through each character in the string. Use the groupby function from itertools module to group the consecutive digits together and add a space before and after the digits. Append each group to the list. then use the join method to combine the list into a single string.
Python3
from itertools import groupby # initializing string test_str = 'Beginner4Beginner is1for10Beginner' # printing original String print ( "The original string is : " + str (test_str)) # using groupby() and isdigit() to solve the problem res = ' '.join([' ' + i + ' ' if i.isdigit() else i for k, g in groupby(test_str) for i in g]) # printing result print ( "The space added string : " + str (res)) #This code is contributed by Pushpa |
The original string is : Beginner4Beginner is1for10Beginner The space added string : Beginner 4 Beginner is 1 for 1 0 Beginner
Time Complexity: O(n) The time complexity of this solution is O(n) because we are iterating through each character in the string once.
Auxiliary Space: O(n) The space complexity of this solution is also O(n) because we are creating a list to store the groups, which can have a maximum length of n.
Contact Us