How to Detect Lowercase Letters in Python?

Problem Formulation

Given a string s. How to get a Boolean value that indicates whether all characters in the string are lowercase?

Example: Say, you ask the user for input and you want to check whether all input characters are lowercase for further processing:

s = input('your name: ')

if <STRING IS LOWERCASE>:
    print('All characters in your string are lowercase')

If the user types in 'alice', the function should return True whereas it should return False for the string 'Alice' or 'ALICE'.

Simple Solution: string.islower()

Python’s islower() method is one of the built-in string methods that returns True if all string characters are lowercase and otherwise False. For example, the lowercase string 'alice'.islower() returns True and the uppercase string 'Alice'.islower() returns False.

>>> 'alice'.islower()
True

Even if you inject some whitespaces, it’ll still yield a True value:

>>> 'al  ic   \ne'.islower()
True

And here are some examples that yield a False value:

>>> 'Alice'.islower()
False
>>> 'ALICE'.islower()
False
>>> 'alicE'.islower()
False

How to Count the Number of Lowercase Letters in a String?

Problem Formulation: A variant of the problem is to count the number of lowercase letters in a given string.

Examples: Here are three strings and the desired return values.

  • 'alice' has five (5) lowercase letters.
  • 'Alice' has four (4) lowercase letters.
  • 'ALICE' has zero (0) lowercase letters.

Solution:

You can use the list comprehension statement [c for c in s if c.islower()] to create a list of lowercase letters in a given string s. Then pass the resulting list of lowercase characters into Python’s built-in len() function to obtain the number of lowercase characters in s.

Here’s the code for our three examples:

def count_lowercase(s):
    return len([c for c in s if c.islower()])

print(count_lowercase('alice'))
# 5

print(count_lowercase('Alice'))
# 4

print(count_lowercase('ALICE'))
# 0

How to Get a List of All Lowercase Characters in a String?

Problem Formulation: A variant of the problem is to return a list of lowercase letters in a given string.

Examples: Here are three strings and the desired return values.

  • 'alice' should yield the list ['a', 'l', 'i', 'c', 'e'].
  • 'Alice' should yield the list ['l', 'i', 'c', 'e'].
  • 'ALICE' should yield the empty list [].

Solution:

You can use the list comprehension statement [c for c in s if c.islower()] to create a list of lowercase letters in a given string s.

Here’s the code for our three examples:

def get_lowercase_chars(s):
    return [c for c in s if c.islower()]

print(get_lowercase_chars('alice'))
# ['a', 'l', 'i', 'c', 'e']

print(get_lowercase_chars('Alice'))
# ['l', 'i', 'c', 'e']

print(get_lowercase_chars('ALICE'))
# []

Alternatives to Check if a String is All Lowercase

There are many ways to Rome—you can solve this problem to check if a string is all lowercase in many different ways.

s = 'alice'

1. Use the predefined str method islower()

>>> s.islower()
False

2. Use the all() function to check if every letter is lowercase.

>>> all(s.islower() for c in s)
True

3. Convert the string to a lowercase string and compare it to the original

>>> s.lower() == s
True

4. Use regular expressions and the re.fullmatch() function combined with character classes.

>>> import re
>>> bool(re.fullmatch('[a-z\s]+', s))
True
>>> s = 'ALICE IS LOWER'
>>> bool(re.fullmatch('[a-z\s]+', s))
False