[Tutor] collecting certain data from a textfile

bob gailer bgailer at gmail.com
Tue Sep 15 16:53:23 CEST 2009


Olli Virta wrote:
> Hi!
>  
> I got this simple but effective piece of code. It picks certain wanted 
> pieces of data from a textfile based on database records and puts all 
> of them them in a new textfile in certain order. I was wondering, 
> could it be possible to make it otherwise in case that there's much 
> more rows in that textfile and/or there's much more bits of data to 
> collect?

Otherwise is always possible! What is the problem? Why do you want it 
"otherwise"?

>  
> data = open('data.txt','r')
> f1 = data.readlines()
> data.close()

There is no need to do the above! You don't need a line count to control 
the loop.

> f2 = open('data.txt','r')

Drop next lline:

> i=0
> f3 = []

Change next two lines:

> while i < len(f1):
>    a=f2.readline()

To:

while True:
   a=f2.readline()
   if not a: break

>    b=f2.readline()
>    c=f2.readline()
>    data2 = (
>             a[1:38].strip()+';'+
>             a[54:88].strip()+';'+
>             b[77:96].strip()+';'+
>             b[1:16].strip()+';'+
>             c[23:33].strip()+';'+
>             c[123:133].strip()+';'
>             )
>    wanted = (data2)

If you are concerned about enough memory, write data2 to the file 
instead of collecting in a list.

>    f3.append(wanted + "\n")

Drop next line:

>    i += 3  
> f4 = open('wanted.txt', 'w')
> f4.write(''.join(f3))
> f2.close()
> f4.close()


-- 
Bob Gailer
Chapel Hill NC
919-636-4239


More information about the Tutor mailing list