On Thu, Feb 2, 2012 at 3:50 PM, Brett Longworth <blongwo...@whoi.edu> wrote: > Hello, > > Today I wrote a quick script to replace elements in multiple lines of a file > with corresponding elements from a single line in another file, linking the > two via an index element. The code iterates through the entire source file > to find the matching index for each line of the destination file. This > works, but it's clearly a terrible way to solve the problem. Can someone > point me to a more efficient, pythonic solution? > > thanks, > -Brett > > Code: > > wheel = "A794" > wheelfile = "A794.txt" > statusfile = "CURRENT.ams" > > sfile = csv.reader(open(statusfile), delimiter='\t') > statusWriter = csv.writer(open('statustest.txt', 'wb'), delimiter='\t', > quotechar='|', quoting=csv.QUOTE_MINIMAL) > > for sline in sfile: > #print sline > wfile = csv.reader(open(wheelfile)) > for line in wfile: > #print line[0] > #print sline[18] > if line[0] == sline[18]: > sline[0] = line [1] > sline[1] = "OSG"+str(line[4]) > sline[17] = wheel > sline[21] = line[9] > statusWriter.writerow(sline) > > Excerpt of wheelfile: > > "2","X496","02/01/12","OSG","106788","85411","GS-13365","Outside Primary > Standard | > Modern (1950)","2.43","149177" > "3","C655","02/01/12","OSG","106534","83028","HY-19231","Outside Blank | > > 30,000","3.63","149178" > > Excerpt of statusfile: > > Y002 BET2918 10/18/06 15:32:52 160.00 174 1.000 16408 > 1.306E-12 1.213E-10 402.6 405.9 -42.7 3.2 1.2242 > -0.0220 1.822 -12.66 A499 2 1 5631 86523 data > 3.7E-6 > Y002 BET2918 10/18/06 15:35:46 150.00 162 1.000 15654 > 1.313E-12 1.226E-10 407.6 410.3 -43.9 2.0 1.2180 > -0.0243 1.894 -13.03 A499 2 1 5631 86523 3.7E-6 > 0003 BET7147 10/18/06 15:55:33 170.00 186 1.000 3442 > 2.903E-13 2.693E-11 357.7 359.3 -46.1 2.5 1.2000 > 0.0276 1.734 -12.86 A499 3 1 5631 86524 3.3E-6 > 0003 BET7147 10/18/06 15:58:49 170.00 185 1.000 3232 > 2.772E-13 2.598E-11 351.8 353.4 -46.1 3.5 1.2000 > 0.0149 1.761 -12.66 A499 3 1 5631 86524 3.2E-6 > 0003 BET7147 10/18/06 16:02:06 170.00 185 1.000 3399 > 2.955E-13 2.753E-11 346.9 > > > -- > Brett Longworth > Research Associate > Woods Hole Oceanographic Institution > ph: 508.289.3559 > fax: 508.457.2183 > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor
If you are a little savvy with sql you could write each csv to tables, Since you have csv file input why not write each to a db table. Then you could join on line[0] == sline[18] and update your 4 fields. Then dump table as csv -- Joel Goldstick _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor