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 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))
|
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 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))
|
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 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 |
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 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))
|
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 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))
|
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 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))
|
The original string is : Geeks4Geeks Does string contain both numbers and alphabets only? : True
Time Complexity: O(n)
Auxiliary Space: O(N)