Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tut] How to Count Vowels in a String
1
How to Count Vowels in a String

Rate this post

Problem Formulation and Solution Overview

In this article, you’ll learn how to count the number of vowels in a string.

To make it more fun, we have the following running scenario:

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.

[Image: 1f4ac.png] Question: How would we write Python code to count the vowels in a String?

We can accomplish this task by one of the following options:

Add the following code to the top of each code snippet. This snippet will allow the code in this article to run error-free.

Code:
import re from collections import Counter

Method 1: Use Regex and Dictionary Comprehension

This example uses
Code:
Regex
and
Code:
Dictionary Comprehension
as a one-liner to tally the number of specified vowels in a string. The results return in a Dictionary format.

Code:
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)

[Image: 2b50.png]A Finxter Favorite!

This code declares the string
Code:
saying
. Then, https://blog.finxter.com/list-comprehension/Dictionary Comprehension converts the string to lowercase and
Code:
re.findall()
searches for and tallies each specified vowel.

The results save to
Code:
vcount
and are output to the terminal.



Output

Code:
{'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.

Code:
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
Code:
saying
. Then, List Comprehension converts the string to lowercase and searches for and tallies each specified vowel.

The results save to variable
Code:
vcount
and are output to the terminal.



Output

Code:
[8, 3, 0, 4, 3]

[Image: 1f4a1.png]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
Code:
Counter()
to count the number of specified vowels in a string.

Code:
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
Code:
saying
and initiates the
Code:
Counter()
object,
Code:
count
.

A
Code:
for
loop instantiates and traverses through each character converting to lowercase, searching for and tallies each specified vowel.

The results save to
Code:
count
and are output to the terminal.

If this code was output to the terminal using
Code:
print(count)
, the output would be as follows:

Output using
Code:
print(count)

Code:
Counter({'a': 8, 'o': 4, 'e': 3, 'u': 3})

Placing
Code:
count
inside
Code:
dict()
removes the word
Code:
Counter
and surrounding braces
Code:
()
.

Output using
Code:
print(dict(count))

Code:
{'a': 8, 'e': 3, 'i': 0, 'o': 4, 'u': 3}

[Image: 1f4a1.png]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
Code:
for
loop and
Code:
string.count()
to tally the number of specified vowels in a string. The results return as a string.

Code:
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
Code:
saying
and initiates a variable
Code:
tmp
.

A
Code:
for
loop instantiates and traverses through each character, searching for and tallying each specified vowel. The results convert to a string, save to
Code:
tmp
, and are output to the terminal.

Output

Code:
a:8 e:3 i:0 o:4 u:3

Method 5: Use map() and count()

This example uses
Code:
map()
and
Code:
count()
to tally the number of specified vowels in a string.

Code:
saying = 'Saskatchewan! Where you can watch your dog run away for 3 days.' print(*map(saying.lower().count, 'aeiou'))

This code declares the string,
Code:
saying
converts the string to lowercase, and tallies the specified vowel. The results are output to the terminal.



Output

Code:
8 3 0 4 3

Summary

In this case,
Code:
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!
Reply

Users browsing this thread:
1 Guest(s)


Forum Jump: