How can i compare a string which is non null and empty

Steven D'Aprano steve at REMOVEME.cybersource.com.au
Mon Apr 2 22:15:46 EDT 2007


On Mon, 02 Apr 2007 13:48:30 -0700, Steven Howe wrote:

> how about just testing it's length?
>  >>> from types import StringType
> 
> def stringTest(x):
> ...     if type(x) == StringType:
> ...             if len(x) == 0:
> ...                     print 'Empty String'
> ...             else:
> ...                     print 'Not Empty String'
> ...     else:
> ...             print 'value not String Type'


Too complicated. You don't need to import StringType, nor do you need
to explicitly ask for the length. Worse, you reject anything that isn't
*precisely* a string. Other string classes, like Unicode and subclasses,
are wrongly rejected. Try this instead:

def stringTest(x):
    if isinstance(x, basestr):
        if x:
            print "Not an empty string."
        else:
            print "An empty string."
    else:
        print "Not a string."


Here's an even shorter version, saving one line.

def stringTest(x):
    if not isinstance(x, basestring):
        print "Not a string."
    elif x:
        print "Not an empty string."
    else:
        print "An empty string."

And here's an even shorter version.

def stringTest(x):
    if not isinstance(x, basestring):
        print "Not a string."
    else:
        print {True: "Not a", False: "A"}[bool(x)] + "n empty string."


Notice, though, that shorter code is not always better.



-- 
Steven D'Aprano 




More information about the Python-list mailing list