Problem Formulation and Solution Overview
In Canada, we have a province called Saskatchewan. This province has a large amount of flat land. In this article, we reference their local saying.
Add the following code to the top of each code snippet. This snippet will allow the code in this article to run error-free.
import re from collections import Counter
Method 1: Use Regex and Dictionary Comprehension
This example uses Regex
and Dictionary Comprehension
as a one-liner to tally the number of specified vowels in a string. The results return in a Dictionary format.
saying = 'Saskatchewan! Where you can watch your dog run away for 3 days.' vcount = {x: len(re.findall(f"{x}", saying.lower())) for x in 'aeiou'} print(vcount)
βA Finxter Favorite!
This code declares the string saying
. Then, Dictionary Comprehension converts the string to lowercase and re.findall()
searches for and tallies each specified vowel.
The results save to vcount
and are output to the terminal.
Output
{'a': 8, 'e': 3, 'i': 0, 'o': 4, 'u': 3} |
Method 2: Use List Comprehension and count()
This example uses List Comprehension to tally the number of specified vowels in a string. The results return in a List format.
saying = 'Saskatchewan! Where you can watch your dog run away for 3 days.' vcount = [saying.lower().count(x) for x in 'aeiou'] print(vcount)
This code declares the string saying
. Then, List Comprehension converts the string to lowercase and searches for and tallies each specified vowel.
The results save to variable vcount
and are output to the terminal.
Output
[8, 3, 0, 4, 3] |
π‘Note: This output displays the totals but not their associated vowel.
Method 3: Use Counter() and count.update()
This example calls the Collections library and uses Counter()
to count the number of specified vowels in a string.
saying = 'Saskatchewan! Where you can watch your dog run away for 3 days.' count = Counter() for i in saying: if i in 'aeiou': count.update(i.lower()) print(dict(count))
This code declares the string saying
and initiates the Counter()
object, count
.
A for
loop instantiates and traverses through each character converting to lowercase, searching for and tallies each specified vowel.
The results save to count
and are output to the terminal.
If this code was output to the terminal using print(count)
, the output would be as follows:
Output using print(count)
Counter({'a': 8, 'o': 4, 'e': 3, 'u': 3}) |
Placing count
inside dict()
removes the word Counter
and surrounding braces ()
.
Output using print(dict(count))
{'a': 8, 'e': 3, 'i': 0, 'o': 4, 'u': 3} |
π‘Note: This method produces the same output as Method 1 but with four (4) additional lines of code.
Method 4: Use For and count()
This example uses a for
loop and string.count()
to tally the number of specified vowels in a string. The results return as a string.
saying = 'Saskatchewan! Where you can watch your dog run away for 3 days.' tmp = '' for i in 'aeiou': tmp += i + ':' + str(saying.count(i)) + ' ' print(tmp)
This code declares the string saying
and initiates a variable tmp
.
A for
loop instantiates and traverses through each character, searching for and tallying each specified vowel. The results convert to a string, save to tmp
, and are output to the terminal.
Output
a:8 e:3 i:0 o:4 u:3 |
Method 5: Use map() and count()
This example uses map()
and count()
to tally the number of specified vowels in a string.
saying = 'Saskatchewan! Where you can watch your dog run away for 3 days.' print(*map(saying.lower().count, 'aeiou'))
This code declares the string, saying
converts the string to lowercase, and tallies the specified vowel. The results are output to the terminal.
Output
8 3 0 4 3 |
Summary
In this case, lower()
was not required as you could see no vowels were in uppercase. However, you may not always know what a string will contain. In this case, best to convert to either lowercase or uppercase.
These five (5) methods of counting vowels in a string should give you enough information to select the best one for your coding requirements.
Good Luck & Happy Coding!