[Tutor] better looping construct for replacing elements in file?

Brett Longworth blongworth at whoi.edu
Thu Feb 2 21:50:49 CET 2012


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



More information about the Tutor mailing list