> From: Steve Holden > Neil Cerutti wrote: > > On 2007-09-10, Chris Mellon <[EMAIL PROTECTED]> wrote: > >> On 9/10/07, Neil Cerutti <[EMAIL PROTECTED]> wrote: > >>> Agreed; but I prefer 'if y[0] == ""', absent more context and > >>> better names. > >> Probably should use u"" if you're going to take that route, as > >> this will fail spuriously if y[0] contains a unicode string > >> that can't be implicitly converted to ascii. Personally, I > >> prefer the boolean check and I'll let operations fail elsewhere > >> if there's a type mismatch. > > > > I have a quibble not with the functionality of the boolean check, > > but with its expressiveness. if y[0] == "" expresses more, i.e., > > that I expect y[0] to contain a Python byte string. > > > I have a quibble with a test that will raise an exception when the > anticipated condition is true. Your test is patently absurd, as you > would have discovered had you bothered to try it: > > >>> y = "" > >>> if y[0] == "": > ... print "True" > ... else: > ... print "False" > ... > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > IndexError: string index out of range > >>> > > Further, when the string is *not* the null string the test will always > return False, as you will be comparing two strings of unequal length. > > So, absent a solution that works, len(y) == 0 looks pretty good.
Going back to the OP, the problem is taking a string such as >>> x = ' \t"ff' then splitting that string like this >>> y = x.split('\t') The question is, does the first element of the list y contain an empty string or not? In this case, the logic in the following conditional is perfectly valid. >>> if y[0] == "": ... print "True" ... else ... print "False" (len(y[0]) == 0) would also work, and is the solution you originally gave the OP. -- -Bill Hamilton -- http://mail.python.org/mailman/listinfo/python-list