On 01/28/2013 09:12 AM, inshu chauhan wrote:
Yes Chris, I understand, My Original code was
for l in f1:
sp = l.split(",")
if len(sp)!= 12:
continue
else:
ix = sp[0].strip()
iy = sp[1].strip()
for s in f2:
st = s.split(",")
if len(st)!= 11:
continue
else:
clas = st[10].strip()
print ix, iy, clas
print >> nf, ix, iy, clas
f1.close()
f2.close()
nf.close()
where f1 contains something like :
297, 404, , ....
298, 404, , ......
299, 404, .....
..... ......
295, 452, ....
and f2 contains something like :
.... 7
..... 2
....2
.....7
and what I want to be written in the new file i.e. nf is something like:
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 7
297 404 2
297 404 2
297 404 2
297 404 2
297 404 2
which m getting but partially correct because only last value is changing
not the first two... which should not happen.. In every loop all the three
values should change..
Your current logic tries to scan through the first file, and for each
line that has 12 elements, scans through the entire second file. It
fails to actually do it, because you never do a seek on the second file.
Now it appears your requirement is entirely different. I believe you
have two text files each having the same number of lines. You want to
loop through the pair of lines (once from each file, doing some kind of
processing and printing). If that's the case, your nested loop is the
wrong thing, and you can forget my caveat about nesting file reads.
What you want is the zip() function
for l,s in zip(f1, f2):
#you now have one line from each file,
# which you can then validate and process
Note, this assumes that when a line is "bad" from either file, you're
going to also ignore the corresponding line from the other. If you have
to accommodate variable misses in the lining up, then your work is
*much* harder.
--
DaveA
--
http://mail.python.org/mailman/listinfo/python-list