On Wed, Jan 30, 2013 at 2:23 PM, Dave Angel <d...@davea.name> wrote: > On 01/30/2013 05:43 AM, inshu chauhan wrote: > >> On Mon, Jan 28, 2013 at 6:05 PM, Dennis Lee Bieber <wlfr...@ix.netcom.com >> >wrote: >> >> On Mon, 28 Jan 2013 14:31:31 +0100, inshu chauhan >>> <insidesh...@gmail.com> declaimed the following in >>> gmane.comp.python.general: >>> >>> In the code below I am trying to read 2 files f1 and f2 , extract some >>>> >>> data >>> >>>> from them and then trying to write them into a single file that is 'nf'. >>>> >>>> import cv >>>> f1 = open(r"Z:\modules\Feature_**Vectors_300.arff") >>>> f2 = open(r"Z:\modules\Feature_**Vectors_300_Pclass.arff") >>>> nf = open(r"Z:\modules\trial.arff", "w") >>>> >>>> >>>> for l in f1: >>>> sp = l.split(",") >>>> >>> >>> If you are going to be splitting on commas, you might want to >>> read >>> up on the csv (comma separate values) module >>> >>> >> The csv module has many fuctions but not of much use to me and it makes >> my >> programme slower >> >> >>> >>>> if len(sp)!= 12: >>>> continue >>>> else: >>>> >>> >>> Given the apparent block structure, you could drop the >>> continue/else, and more cleanly just use >>> >>> >> Yeah, Thats Right >> >> >>> if len(sp) == 12: >>> >>>> ix = sp[0].strip() >>>> iy = sp[1].strip() >>>> print ix, iy >>>> >>>> for s in f2: >>>> >>> >>> It's been mentioned that the indentation is wrong here >>> >>> >> I dont know why the indentation is wrong ? >> > > Your for statement is not lined up with the print that precedes it. If > your code were really that way, you'd be getting an indentation error. So > we assume it's because your email editor is mangling the code. Post in > text email, not in html. > > > >> >>> st = s.split(",") >>>> >>>> csv module again >>> >>> if len(st)!= 11: >>>> continue >>>> else: >>>> >>> >>> I'm tempted to repeat the comment on reversing the conditional >>> BUT >>> >>> clas = st[10].strip() >>>> >>>> print ix, iy, clas >>>> print >> nf, ix, iy, clas >>>> >>>> The indentation of the print statements is not aligned with >>> the >>> previous assignment -- the effect is the same however as everything >>> under the else is executed anyway. >>> >>> But as has also been mentioned, ignoring indentation, the >>> apparent >>> algorithm you have here is going to process every line of f2 for the >>> first line of f1 -- and then for later lines in f1 it will find f2 is at >>> the end of file, and do nothing. If it is supposed to process every line >>> of f2 for each line of f1, you'll need to rewind f2. >>> >>> >> For that I added 'Break' statement as suggested by Chris in above mails. >> >> >>> If you mean to match one line of f1 with one line of f2, you do >>> not >>> want nested loops. But now you have to define the behavior if one of the >>> two files is correct length and the other is not? Do you skip both or >>> read the next line from the wrong length file? And how will you handle >>> files with different numbers of records. >>> >>> >> Yes , actually my Prog was like this : >> 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: >> > > This is not nested, it's back at the left margin. Or it could be posting > wrong because you're still posting in html, instead of plain text email.
> Yes My Initial code was not nested at the same time of no use too, I am > trying to use zip() now :) :) nyways.. > > > st = s.split(",") >> >> if len(st)!= 11: >> continue >> else: >> clas = st[10].strip() >> >> print ix, iy, clas >> print >> nf, ix, iy, clas >> break >> >> >> f1.close() >> f2.close() >> nf.close() >> >> I actually dont want nested loops but cant find another way to achieve >> what >> I want, But for these files I am sure that they have equal lengths, thats >> why I am taking the risk of using nested loops. >> > > You have that backwards. Because you say you can assume they're the same > length, you don't need the flexibility (and unreadability) of the nested > approach. The zip approach works great, and nested is unnecessary. > > > . Can you suggest any > >> different way to go around this problem , which could be flexible and >> non-errorneous ? >> >> >> >
-- http://mail.python.org/mailman/listinfo/python-list