Between this info and http://www.python.org/doc/2.5.2/tut/node11.html#SECTION00111000000000000000000 , I'm starting to understand how I'll use generators (I've seen them mentioned before, but never used them knowingly).
> list_o_lines = [line for line in open(filename) if line.strip()] +1 for "list_o_lines" Thanks for the help! Thomas On Nov 4, 6:36 pm, Falcolas <[EMAIL PROTECTED]> wrote: > On Nov 4, 3:30 pm, tmallen <[EMAIL PROTECTED]> wrote: > > > > > On Nov 4, 4:30 pm, [EMAIL PROTECTED] wrote: > > > > tmallen: > > > > > I'm parsing some text files, and I want to strip blank lines in the > > > > process. Is there a simpler way to do this than what I have here? > > > > lines = filter(lambda line: len(line.strip()) > 0, lines) > > > > xlines = (line for line in open(filename) if line.strip()) > > > > Bye, > > > bearophile > > > I must be missing something: > > > >>> xlines = (line for line in open("new.data") if line.strip()) > > >>> xlines > > > <generator object at 0x6b648>>>> xlines.sort() > > > Traceback (most recent call last): > > File "<stdin>", line 1, in <module> > > AttributeError: 'generator' object has no attribute 'sort' > > > What do you think? > > > Thomas > > Using the surrounding parentheses creates a generator object, whereas > using square brackets would create a list. So, if you want to run list > operations on the resulting object, you'll want to use the list > comprehension instead. > > i.e. > > list_o_lines = [line for line in open(filename) if line.strip()] > > Downside is the increased memory usage and processing time as you dump > the entire file into memory, whereas if you plan to do a "for line in > xlines:" operation, it would be faster to use the generator. -- http://mail.python.org/mailman/listinfo/python-list