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