Search code examples
pythonstring

Check if string is None, empty or has spaces only


What's the Pythonic way of checking whether a string is None, empty or has only whitespace (tabs, spaces, etc)? Right now I'm using the following bool check:

s is None or not s.strip()

..but was wondering if there's a more elegant / Pythonic way to perform the same check. It may seem easy but the following are the different issues I found with this:

  • isspace() returns False if the string is empty.
  • A bool of string that has spaces is True in Python.
  • We cannot call any method, such as isspace() or strip(), on a None object.

Solution

  • The only difference I can see is doing:

    not s or not s.strip()
    

    This has a little benefit over your original way that not s will short-circuit for both None and an empty string. Then not s.strip() will finish off for only spaces.

    Your s is None will only short-circuit for None obviously and then not s.strip() will check for empty or only spaces.