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
--
http://mail.python.org/mailman/listinfo/python-list