During the data cleaning process, you might have encountered situations where you’ve needed to remove specific characters from a string. In this article, I’ll explain how to remove different characters from a string in Python.
5 Tips to Remove Characters From a String
- Remove specific characters from the string.
- Remove all characters except alphabets from a string.
- Remove all characters except the alphabets and the numbers from a string.
- Remove all numbers from a string using a regular expression.
- Remove all characters from the string except numbers.
1. Remove Specific Characters From the String
Using ‘str.replace’
Using str.replace(), we can replace a specific character. If we want to remove that specific character, we can replace that character with an empty string. The str.replace() method will replace all occurrences of the specific character mentioned.

s="Hello$ Python3$"
s1=s.replace("$","")
print (s1)
#Output:Hello Python3
If we want to remove one occurrence of that character mentioned, we can mention the count:
str.replace(old,new,count)
s="Hello$ Python3$"
s1=s.replace("$","",1)
print (s1)
#Output:Hello Python3$
Using ‘re.sub()’
re.sub(pattern, repl, string, count=0, flags=0)
“Return the string obtained by replacing the leftmost nonoverlapping occurrences of pattern in the string by the replacement repl. If the pattern isn’t found, the string is returned unchanged,” according to the Python’s documentation.
If we want to remove specific characters, the replacement string is mentioned as an empty string.

s="[email protected]& Python3$"
import re
s1=re.sub("[[email protected]&]","",s)
print (s1)
#Output:Hello Python3
s1=re.sub(“[[email protected]&]”,””,s)
- Pattern to be replaced: “
[[email protected]&]
” []
used to indicate a set of characters.[[email protected]&]
:will match either$
or@
or&
.- The replacement string is given as an empty string.
- If these characters are found in the string, they’ll be replaced with an empty string.
2. Remove All Characters Except Alphabets From a String
Using ‘isalpha()’

isalpha()
is used to check whether the string contains the alphabet or not. It returns True
if it contains only the alphabet.
It’ll iterate through the string and check whether each character in the string is an alphabet or not, and return it if it’s an alphabet.
Example
s="[email protected] Python3&"
s1="".join(c for c in s if c.isalpha())
print (s1)
#Output:HelloPython
s=”[email protected] Python3&”
(c for c in s if c.isalpha())
Result: [‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘P’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’]
It’s a generator expression. It returns a generator object containing all alphabets from the string.
s1=””.join(c for c in s if c.isalpha())
””.join
will join all of the elements in the iterable using an empty string.
Using ‘filter()’
s="[email protected] Python3&"
f=filter(str.isalpha,s)
s1="".join(f)
print (s1)
f=filter(str.isalpha,s)
The filter()
function will apply the str.isalpha
method to each element in the string, and if it’s True
, it’ll return the item. Otherwise, it’ll skip the item.
s1=””.join(f)
filter()
will return an iterator containing all of the alphabets in the string, and join()
will join all of the elements in the iterator with an empty string.
Using ‘re.sub()’

s="[email protected] Python3$"
import re
s1=re.sub("[^A-Za-z]","",s)
print (s1)
#Output:HelloPython
s1=re.sub(“[^A-Za-z]”,””,s)
“[^A-Za-z]”
: It’ll match all of the characters except the alphabets. If the first character of the set is'^'
, then all of the characters not in the set will be matched.- All of the characters matched will be replaced with an empty string.
- All of the characters except the alphabets are removed.
3. Remove All Characters Except the Alphabets and the Numbers From a String
Using ‘isalnum()’

isalnum()
is used to check whether characters in the string are alphanumeric. Alphabets [A-Z, a-z] and numbers [0-9] are alphanumeric.
It’ll iterate through the string and check whether each character in the string is alphanumeric or not and return it if it’s an alphabet/number.
s="[email protected] Python3&"
s1="".join(c for c in s if c.isalnum())
print (s1)
#Output:HelloPython3
Using ‘re.sub()’
s="[email protected] Python3&_"
import re
s1=re.sub("[^A-Za-z0-9]","",s)
print (s1)#Output:HelloPython3
s1=re.sub(“[^A-Za-z0–9]”,””,s)
“[^A-Za-z0–9]”
: This will match all of the characters except the alphabets and the numbers. If the first character of the set is'^'
, then all of the characters not in the set will be matched.- All of the characters matched will be replaced with an empty string.
- All of the characters except the alphabets and numbers are removed.
4. Remove All Numbers From a String Using a Regular Expression
Using ‘re.sub()’

s="Hello347 Python3$"
import re
s1=re.sub("[0-9]","",s)
print (s1)
#Output:Hello Python$
s1=re.sub(“[0–9]”,””,s)
[0–9]
will match the numbers from 0-9.re.sub(“[0–9]”,””,s
, if found, will be replaced with an empty string.
5. Remove All Characters From the String Except Numbers
Using ‘isdecimal()’
“isdecimal()
returns True
if all characters in the string are decimals and there’s at least one character. Otherwise, it returns False
. The decimal numbers are numbers that can be used to form numbers in base-10,” according to Python’s documentation.

Example
s="1-2$3%4 5a"
s1="".join(c for c in s if c.isdecimal())
print (s1)
#Output:12345
s1=””.join(c for c in s if c.isdecimal())
This iterates through the string and checks whether each character in the string is a number or not and returns it if it’s a number.
””.join()
will join all of the elements returned with an empty string.
Using ‘re.sub()’
s="1-2$3%4 5a"
import re
s1=re.sub("[^0-9]","",s)
print (s1)
#Output:12345
s1=re.sub(“[^0–9]”,””,s)
[^0–9]
will match all characters except numbers 0-9.re.sub(“[^0–9]”,””,s
: If any character that’s not a number is found, it’ll be replaced with an empty string.
Using ‘filter()’
s="1-2$3%4 5a"
f=filter(str.isdecimal,s)
s1="".join(f)
print (s1)
#Output:12345
f=filter(str.isdecimal,s)
The filter()
function will apply the str.isdecimal
method to each element in the string, and if it’s True
, it’ll return the item. Otherwise, it’ll skip the item.
s1=””.join(f)
filter()
will return an iterator containing all of the numbers in the string, and join()
will join all of the elements in the iterator with an empty string.
Ultimately, Python strings are immutable, so all of the mentioned methods will remove characters from the string and return a new string. It won’t modify the original string.