Python Program to test if the String only Numbers and Alphabets
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 = 'Beginner4Beginner' Output : True Explanation : Contains both number and alphabets. Input : test_str = 'w3wiki' Output : False Explanation : Doesn't contain number.
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 = 'Beginner4Beginner' # 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 : Beginner4Beginner 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 = 'Beginner4Beginner' # 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 : Beginner4Beginner 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 = 'Beginner4Beginner' 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 : Beginner4Beginner 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 = 'Beginner4Beginner' 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 : Beginner4Beginner 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 = 'Beginner4Beginner' 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 : Beginner4Beginner 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 = 'Beginner4Beginner' # 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 : Beginner4Beginner Does string contain both numbers and alphabets only? : True
Time Complexity: O(n)
Auxiliary Space: O(N)