The Python Oracle

How to check if the string is empty?

--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------

Music by Eric Matyas
https://www.soundimage.org
Track title: The World Wide Mind

--

Chapters
00:00 How To Check If The String Is Empty?
00:20 Accepted Answer Score 3076
00:48 Answer 2 Score 547
01:19 Answer 3 Score 346
01:39 Answer 4 Score 135
02:02 Answer 5 Score 91
02:16 Thank you

--

Full question
https://stackoverflow.com/questions/9573...

--

Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...

--

Tags
#python #string #comparisonoperators

#avk47



ACCEPTED ANSWER

Score 3080


Empty strings are "falsy" (python 2 or python 3 reference), which means they are considered false in a Boolean context, so you can just do this:

if not myString:

This is the preferred way if you know that your variable is a string. If your variable could also be some other type then you should use:

if myString == "":

See the documentation on Truth Value Testing for other values that are false in Boolean contexts.




ANSWER 2

Score 548


From PEP 8, in the “Programming Recommendations” section:

For sequences, (strings, lists, tuples), use the fact that empty sequences are false.

So you should use:

if not some_string:

or:

if some_string:

Just to clarify, sequences are evaluated to False or True in a Boolean context if they are empty or not. They are not equal to False or True.




ANSWER 3

Score 347


The most elegant way would probably be to simply check if its true or falsy, e.g.:

if not my_string:

However, you may want to strip white space because:

 >>> bool("")
 False
 >>> bool("   ")
 True
 >>> bool("   ".strip())
 False

You should probably be a bit more explicit in this however, unless you know for sure that this string has passed some kind of validation and is a string that can be tested this way.




ANSWER 4

Score 135


I would test noneness before stripping. Also, I would use the fact that empty strings are False (or Falsy). This approach is similar to Apache's StringUtils.isBlank or Guava's Strings.isNullOrEmpty

This is what I would use to test if a string is either None OR empty OR blank:

def isBlank (myString):
    return not (myString and myString.strip())

And the exact opposite to test if a string is not None NOR empty NOR blank:

def isNotBlank (myString):
    return bool(myString and myString.strip())