Python - Remove all digits before given Number
Last Updated :
03 Mar, 2023
Given a String, remove all numeric digits before K number.
Method #1 : Using split() + enumerate() + index() + list comprehension
This is one of the ways in which this task can be performed. In this, we perform task of split() to get all words, getting index of K number using index() and list comprehension can be used to extract digits only after the K Number.
Python3
# Python3 code to demonstrate working of
# Remove digits before K Number
# Using split() + enumerate() + index() + list comprehension
# initializing string
test_str = 'geeksforgeeks 2 6 is 4 geeks 5 and CS8'
# printing original string
print("The original string is : " + str(test_str))
# initializing K
K = 4
# get K Number index
idx = test_str.split().index(str(K))
# isdigit() used to check for number
res = [ele for i, ele in enumerate(test_str.split()) if not (i < idx and ele.isdigit())]
res = ' '.join(res)
# printing result
print("String after removing digits before K : " + str(res))
OutputThe original string is : geeksforgeeks 2 6 is 4 geeks 5 and CS8
String after removing digits before K : geeksforgeeks is 4 geeks 5 and CS8
Time Complexity: O(n)
Space Complexity: O(n)
Method #2 : Using regex() + index()
In this method, regex is used to remove all the elements before the required index, and then strings are joined pre and post index.
Python3
# Python3 code to demonstrate working of
# Remove digits before K Number
# Using regex() + index()
import re
# initializing string
test_str = 'geeksforgeeks 2 6 is 4 geeks 5 and CS8'
# printing original string
print("The original string is : " + str(test_str))
# initializing K
K = 4
# using regex to achieve task
res = re.sub('[023456789]', '', test_str[0 : test_str.index(str(K))]) + test_str[test_str.index(str(K)):]
# printing result
print("String after removing digits before K : " + str(res))
OutputThe original string is : geeksforgeeks 2 6 is 4 geeks 5 and CS8
String after removing digits before K : geeksforgeeks is 4 geeks 5 and CS8
Time Complexity: O(n)
Space Complexity: O(n)
Method #3 : Using index(),replace() and slicing
Python3
# Python3 code to demonstrate working of
# Remove digits before K Number
# Initializing string
test_str = 'geeksforgeeks 2 6 is 4 geeks 5 and CS8'
# Printing original string
print("The original string is : " + str(test_str))
# Initializing K
K = 8
a=test_str.index(str(K))
digits="0123456789"
b=test_str[:a]
c=test_str[a:]
for i in digits:
b=b.replace(i,"")
# Printing result
print("String after removing digits before K : " + (b+c))
OutputThe original string is : geeksforgeeks 2 6 is 4 geeks 5 and CS8
String after removing digits before K : geeksforgeeks is geeks and CS8
Method #4 : Using list comprehension:
Python3
test_str = 'geeksforgeeks 2 6 is 4 geeks 5 and CS8'
K = 4
words = test_str.split()
# Printing original string
print("The original string is : " + str(test_str))
res = []
K_reached = False
for word in words:
if not K_reached and word.isdigit():
continue
elif word == str(K):
K_reached = True
res.append(word)
res = ' '.join(res)
print("String after removing digits before K : " + str(res))
#This code is contributed by Jyothi pinjala.
OutputThe original string is : geeksforgeeks 2 6 is 4 geeks 5 and CS8
String after removing digits before K : geeksforgeeks is geeks and CS8
Time Complexity: O(n)
Space Complexity: O(n)
Method #5: Using for loop and in operator
Python3
test_str = 'geeksforgeeks 2 6 is 4 geeks 5 and CS8'
K = 4
# Printing original string
print("The original string is : " + str(test_str))
# Splitting the string into words
words = test_str.split()
res = []
K_reached = False
# Iterating through each word in the list
for word in words:
if not K_reached and word.isdigit():
continue
elif word == str(K):
K_reached = True
res.append(word)
res = ' '.join(res)
print("String after removing digits before K : " + str(res))
#This code is contributed by Vinay Pinjala.
OutputThe original string is : geeksforgeeks 2 6 is 4 geeks 5 and CS8
String after removing digits before K : geeksforgeeks is geeks and CS8
Time Complexity:O(N)
Auxiliary Space :O(N)
Method#6: Using Recursive method.
Algorithm:
- Split the input string into words.
- Define a recursive helper function that takes in a list of words and a boolean value K_reached.
- The helper function pops the first word off the list of words and examines it.
- If we haven't reached K yet and the current word is a digit, skip over it and continue recursively with the remaining list of words and the same K_reached value.
- If we encounter K, include it in the result string and set K_reached to True, then continue recursively with the remaining list of words and the updated K_reached value.
- Otherwise, include the current word in the result string and continue recursively with the remaining list of words and the same K_reached value.
- When the list of words is empty, return an empty string.
- Strip any leading or trailing whitespace from the resulting string.Call the helper function with the initial list of words and K_reached=False, and return the resulting string.
Python3
def remove_digits_before_K(test_str, K):
def helper(words, K_reached):
if not words:
return ''
word = words.pop(0)
if not K_reached and word.isdigit():
return helper(words, K_reached)
elif word == str(K):
return word + ' ' + helper(words, True)
else:
return word + ' ' + helper(words, K_reached)
words = test_str.split()
return helper(words, False).strip()
test_str = 'geeksforgeeks 2 6 is 4 geeks 5 and CS8'
K = 4
# Printing original string
print("The original string is : " + str(test_str))
res=remove_digits_before_K(test_str, K)
print("String after removing digits before K : " + str(res))
OutputThe original string is : geeksforgeeks 2 6 is 4 geeks 5 and CS8
String after removing digits before K : geeksforgeeks is geeks and CS8
The time complexity of the algorithm is O(n), where n is the number of words in the input string, because we need to process each word exactly once.
The auxiliary space of the algorithm is also O(n), because we create a new list of words and a new string with each recursive call to the helper function, and the maximum depth of the recursion is equal to the number of words in the input string.
Similar Reads
Sum the Digits of a Given Number - Python The task of summing the digits of a given number in Python involves extracting each digit and computing their total . For example, given the number 12345, the sum of its digits is 1 + 2 + 3 + 4 + 5 = 15. Using modulo (%)This method efficiently extracts each digit using the modulus (%) and integer di
2 min read
Python | Ways to remove numeric digits from given string In Python, we can remove numeric digits from a string in multiple ways. For example, if we have a string like "Geeks123" and we want to remove the numbers to get "Geeks", we can use different methods to accomplish this. We can do this by using techniques such as list comprehension, regular expressio
3 min read
Python - Replace all numbers by K in given String We need to write a python program to replace all numeric digits (0-9) in a given string with the character 'K', while keeping all non-numeric characters unchanged. For example we are given a string s="hello123world456" we need to replace all numbers by K in the given string so the string becomes "he
2 min read
Remove All Characters Except Letters and Numbers - Python In this article, weâll learn how to clean a string by removing everything except letters (AâZ, aâz) and numbers (0â9). This means getting rid of:Special characters (@, #, !, etc.)Punctuation marksWhitespaceFor example, consider a string s = "[email protected]", after removing everything except the numbers
2 min read
Python - Remove numbers with repeating digits Given a list of numbers, the task is to write a Python program to remove all numbers with repetitive digits. Examples: Input : test_list = [4252, 6578, 3421, 6545, 6676]Output : test_list = [6578, 3421]Explanation : 4252 has 2 occurrences of 2 hence removed. Similar case for all other removed. Input
5 min read