On 09/08/2012 06:02 AM, tinn...@isbd.co.uk wrote: > Dave Angel <d...@davea.name> wrote: >> Would you like to define "exists" ? A list is not sparse, so all items >> exist if their subscript is less than the length of the list. So all >> you need to do is compare 2 to len(fld). >> > Yes, a I said a simple len(fld) will tell me if fld[2] 'exists' but it > gets messy if I have to do it in the middle of the print sequence. > > >> But perhaps there's another approach. Just what DO you want to print if >> fld(1) exists, but fld(2) does not? Do you still want to print out day, >> fld(1), and balance? Or do you want to skip balance as well? >> > Here's a sample of the file whose lines are being split() :- > > 01 JB 0.00 Start of 2012, Initial balance > 02 BB 0.00 > 13 ZB 0.00 > > I want to print out everything, it's just that in some cases there's > no descriptive text (the bit that ends up in fld[2]). > > >> if you literally want nothing printed for list elements beyond the end, >> then I'd add some extra empty-strings to the end of the list. >> >> fld.extend("" * 5) >> >> Now, subscripts 0 through 4 inclusive will work, as specified. >> > That's probably the simplest approach, thank you. >
If there literally is only one missing field, and at the end, then you could use fld.append("") instead. Or better, you could do something like if len(fld) == 2 : fld.append(""") This may be longer, but at least it's in one place -- the place where the split is occurring. And it pretty much states that the fld2 is optional. You ought to consider what error to report if you encounter a line with missing fields that ARE required. -- DaveA -- http://mail.python.org/mailman/listinfo/python-list