Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Python Program to test if the String only Numbers and Alphabets

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given a String, our task is to write a Python program to check if string contains both numbers and alphabets, not either nor punctuations.

Examples:

Input : test_str = 'Geeks4Geeks'
Output : True
Explanation : Contains both number and alphabets.

Input : test_str = 'GeeksforGeeks'
Output : False
Explanation : Doesn't contain number.

Method #1 : Using isalpha() + isdigit() + any() + all() + isalnum()

In this, we check for all digits containing is alphabets and numbers combination using all(), isalpha() and isdigit(). The any() and isalnum() is used to filter out possibility of punctuations.

Python3




# Python3 code to demonstrate working of
# Test if string contains both Numbers and Alphabets only
# Using isalpha() + isdigit() + any() + all() + isalnum()
 
# initializing string
test_str = 'Geeks4Geeks'
 
# printing original string
print("The original string is : " + str(test_str))
 
# conditional combination for getting result.
res = not ((all(idx.isdigit() for idx in test_str) or (all(idx.isalpha()
            for idx in test_str)) or (any(not idx.isalnum() for idx in test_str))))
 
# printing result
print("Does string contain both numbers and alphabets only? : " + str(res))

Output

The original string is : Geeks4Geeks
Does string contain both numbers and alphabets only? : True

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

Method #2 : Using regex

Using regex is one of the ways in which this problem can be solved. 

Python3




# Python3 code to demonstrate working of
# Test if string contains both Numbers and Alphabets only
# Using regex
import re
 
# initializing string
test_str = 'Geeks4Geeks'
 
# printing original string
print("The original string is : " + str(test_str))
 
# conditional combination for getting result.
res = bool(re.match("^(?=.*[a-zA-Z])(?=.*[\d])[a-zA-Z\d]+$", "A530"))
         
# printing result
print("Does string contain both numbers and alphabets only? : " + str(res))

Output

The original string is : Geeks4Geeks
Does string contain both numbers and alphabets only? : True

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

Method #3 : Using in operator

Python3




# Python3 code to demonstrate working of
# Test if string contains both Numbers and Alphabets only
 
# initializing string
test_str = 'Geeks4Geeks'
lowercasealphabets="abcdefghijklmnopqrstuvwxyz"
uppercasealphabets="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
digits="0123456789"
 
# printing original string
print("The original string is : " + str(test_str))
 
res=False
al=0
dig=0
for i in test_str:
    if (i in lowercasealphabets) or (i in uppercasealphabets):
        al+=1
    elif (i in digits) :
        dig+=1
if(al+dig==len(test_str)):
    res=True
     
# printing result
print("Does string contain both numbers and alphabets only? : " + str(res))
 
 
 
#contributed by Bhavya Koganti

Output

The original string is : Geeks4Geeks
Does string contain both numbers and alphabets only? : True

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

Method #4 : Using replace() and len() methods

Python3




# Python3 code to demonstrate working of
# Test if string contains both Numbers and
# alphabets only
 
# Initializing string
test_str = 'Geeks4Geeks'
 
lalphabets = "abcdefghijklmnopqrstuvwxyz"
ualphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
digits = "0123456789"
 
x = lalphabets+ualphabets+digits
 
# Printing original string
print("The original string is : " + str(test_str))
 
for i in x:
    test_str = test_str.replace(i, "")
res = False
if(len(test_str) == 0):
    res = True
 
# Printing result
print("Does string contain both numbers and alphabets only? : " + str(res))

Output

The original string is : Geeks4Geeks
Does string contain both numbers and alphabets only? : True

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

Method #5: Using operator.countOf() method

Python3




# Python3 code to demonstrate working of
# Test if string contains both Numbers and Alphabets only
import operator as op
# initializing string
test_str = 'Geeks4Geeks'
lowercasealphabets="abcdefghijklmnopqrstuvwxyz"
uppercasealphabets="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
digits="0123456789"
 
# printing original string
print("The original string is : " + str(test_str))
 
res=False
al=0
dig=0
for i in test_str:
    if ( op.countOf(lowercasealphabets.split(),i)>0) or (op.countOf(uppercasealphabets.split(),i)>0):
        al+=1
    elif (op.countOf(digits.split(),i)>0) :
        dig+=1
if(al+dig==len(test_str)):
    res=True
     
# printing result
print("Does string contain both numbers and alphabets only? : " + str(res))

Output

The original string is : Geeks4Geeks
Does string contain both numbers and alphabets only? : False

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

Method #6:Using itertools.filterfalse() method

Python3




# Python3 code to demonstrate working of
# Test if string contains both Numbers and Alphabets only
import itertools
 
# initializing string
test_str = 'Geeks4Geeks'
 
# printing original string
print("The original string is : " + str(test_str))
 
# conditional combination for getting result.
res = list(itertools.filterfalse(
    lambda x: (x.isdigit() or x.isalpha()), test_str))
if(res):
    res = False
res = True
# printing result
print("Does string contain both numbers and alphabets only? : " + str(res))

Output

The original string is : Geeks4Geeks
Does string contain both numbers and alphabets only? : True

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


My Personal Notes arrow_drop_up
Last Updated : 06 Feb, 2023
Like Article
Save Article
Similar Reads
Related Tutorials