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 stringtest_str = 'Geeks4Geeks'Â
# printing original stringprint("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 resultprint("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 regeximport reÂ
# initializing stringtest_str = 'Geeks4Geeks'Â
# printing original stringprint("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 resultprint("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 stringtest_str = 'Geeks4Geeks'lowercasealphabets="abcdefghijklmnopqrstuvwxyz"uppercasealphabets="ABCDEFGHIJKLMNOPQRSTUVWXYZ"digits="0123456789"Â
# printing original stringprint("The original string is : " + str(test_str))Â
res=Falseal=0dig=0for i in test_str:    if (i in lowercasealphabets) or (i in uppercasealphabets):        al+=1    elif (i in digits) :        dig+=1if(al+dig==len(test_str)):    res=True     # printing resultprint("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 stringtest_str = 'Geeks4Geeks'Â
lalphabets = "abcdefghijklmnopqrstuvwxyz"ualphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"digits = "0123456789"Â
x = lalphabets+ualphabets+digitsÂ
# Printing original stringprint("The original string is : " + str(test_str))Â
for i in x:Â Â Â Â test_str = test_str.replace(i, "")res = Falseif(len(test_str) == 0):Â Â Â Â res = TrueÂ
# Printing resultprint("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 onlyimport operator as op# initializing stringtest_str = 'Geeks4Geeks'lowercasealphabets="abcdefghijklmnopqrstuvwxyz"uppercasealphabets="ABCDEFGHIJKLMNOPQRSTUVWXYZ"digits="0123456789"Â
# printing original stringprint("The original string is : " + str(test_str))Â
res=Falseal=0dig=0for 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+=1if(al+dig==len(test_str)):    res=True     # printing resultprint("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 onlyimport itertoolsÂ
# initializing stringtest_str = 'Geeks4Geeks'Â
# printing original stringprint("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 = Falseres = True# printing resultprint("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)
