Testing what a string is composed of

suggest change

Python’s str type also features a number of methods that can be used to evaluate the contents of a string. These are str.isalpha, str.isdigit, str.isalnum, str.isspace. Capitalization can be tested with str.isupper, str.islower and str.istitle.

str.isalpha

str.isalpha takes no arguments and returns True if the all characters in a given string are alphabetic, for example:

>>> "Hello World".isalpha()  # contains a space
False
>>> "Hello2World".isalpha()  # contains a number
False
>>> "HelloWorld!".isalpha()  # contains punctuation
False
>>> "HelloWorld".isalpha()
True

As an edge case, the empty string evaluates to False when used with "".isalpha().

str.isupper, str.islower, str.istitle

These methods test the capitalization in a given string.

str.isupper is a method that returns True if all characters in a given string are uppercase and False otherwise.

>>> "HeLLO WORLD".isupper()
False
>>> "HELLO WORLD".isupper()
True
>>> "".isupper()
False

Conversely, str.islower is a method that returns True if all characters in a given string are lowercase and False otherwise.

>>> "Hello world".islower()
False
>>> "hello world".islower()
True
>>> "".islower()
False

str.istitle returns True if the given string is title cased; that is, every word begins with an uppercase character followed by lowercase characters.

>>> "hello world".istitle()
False
>>> "Hello world".istitle()
False
>>> "Hello World".istitle()
True
>>> "".istitle()
False

str.isdecimal, str.isdigit, str.isnumeric

str.isdecimal returns whether the string is a sequence of decimal digits, suitable for representing a decimal number.

str.isdigit includes digits not in a form suitable for representing a decimal number, such as superscript digits.

str.isnumeric includes any number values, even if not digits, such as values outside the range 0-9.

isdecimal    isdigit   isnumeric

12345        True        True       True
១2߃໔5        True        True       True
①²³🄅₅       False       True       True
⑩⒓          False       False      True
Five         False       False      False

Bytestrings (bytes in Python 3, str in Python 2), only support isdigit, which only checks for basic ASCII digits.

As with str.isalpha, the empty string evaluates to False.

str.isalnum

This is a combination of str.isalpha and str.isnumeric, specifically it evaluates to True if all characters in the given string are alphanumeric, that is, they consist of alphabetic or numeric characters:

>>> "Hello2World".isalnum()
True
>>> "HelloWorld".isalnum()
True
>>> "2016".isalnum()
True
>>> "Hello World".isalnum()  # contains whitespace
False

str.isspace

Evaluates to True if the string contains only whitespace characters.

>>> "\t\r\n".isspace()
True
>>> " ".isspace()
True

Sometimes a string looks “empty” but we don’t know whether it’s because it contains just whitespace or no character at all

>>> "".isspace()
False

To cover this case we need an additional test

>>> my_str = ''
>>> my_str.isspace()
False
>>> my_str.isspace() or not my_str
True

But the shortest way to test if a string is empty or just contains whitespace characters is to use strip(with no arguments it removes all leading and trailing whitespace characters)

>>> not my_str.strip()
True

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents