Почему бы просто не использовать re.findall
, чтобы найти счетчик обоих и получить результаты?
import re
s = '123ABCD'
numAlphabets = len(re.findall('[a-zA-Z]', s))
numDigits = len(re.findall('\d', s))
if numAlphabets > numDigits:
print('More alphabets then digits')
elif numDigits > numAlphabets:
print('More digits then alphabets')
else:
print('Same numbers for both')
Для этого случая он печатает,
More alphabets then digits
Кроме того, если все выхотите вернуть 1, если больше алфавитов, и 0, если меньше алфавитов, чем цифр, вы можете использовать эту функцию,
import re
def has_more_alphabets(s):
if len(re.findall('[a-zA-Z]', s)) > len(re.findall('\d', s)):
return 1
else:
return 0
print(has_more_alphabets('123ABCD'))
print(has_more_alphabets('123@@334ABCD'))
print(has_more_alphabets('123###ad553353455ABCD'))
print(has_more_alphabets('123BCD'))
Печатает следующее,
1
0
0
0