Modifying a textfile

Chris Rebert clp2 at rebertia.com
Thu Sep 3 12:32:38 CEST 2009


On Thu, Sep 3, 2009 at 3:21 AM, Olli Virta<llvirta at gmail.com> wrote:
> Hi!
>
> So I got this big textfile. It's full of data from a database. About
> 150 or
> more rows or lines in a textfile.
> There's three first rows that belong to the same subject. And then
> next
> three rows belong to another subject and so on, to the end of the
> file.
>
> What I need to do, is put the three rows that goes together and belong
> to
> certain subject, on a one line in the output textfile. And the next
> three
> rows again on a one new line. And that goes with the rest of the data
> to
> the end of the new file.
>
> Can't figure out a working loop structure to handle this.

#completely untested
from itertools import  izip_longest
#from itertools recipes
def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)

output = file("output_file.whatever", 'w')
f = file("input_file.whatever", 'r')
for triple in grouper(3, f):
    triple = triple.replace('\n', '')
    output.write(triple)
    output.write('\n')

Cheers,
Chris
--
http://blog.rebertia.com



More information about the Python-list mailing list