Fillmore wrote: > > I must be missing something simple because I can't find a way to break > out of a nested loop in Python. > > Is there a way to label loops? > > For the record, here's a Perl script of mine I'm trying to port...there > may be 'malformed' lines in a TSV file I'm parsing that are better > discarded than fixed. > > my $ctr = 0; > OUTER: > while($line = <FILE>) { > > $ctr++; > if ($ctr < 5) {next;} > > my @allVals = split /\t/,$line; > > my $newline; > foreach my $i (0..$#allVals) { > > if ($i == 0) { > if ($allVals[0] =~ /[^[:print:]]/) {next OUTER;} > > $newline = $allVals[0]; > } > > if (defined $headers{$i}) { > > #if column not a number, skip line > if ($allVals[$i+1] !~ /^\d+$/) {next OUTER;} > > $newline .= "\t".$allVals[$i+1]; > } > } > print $newline."\n"; > > }
You're used to Perl, you're used to exceptions being A Thing. This is Python, and exceptions are just another means of flow control. class MalformedLineError(Exception): pass for line in file: try: for part in line.split('\t'): if thispartisbadforsomereason: raise MalformedLineError() otherwisewedothestuff except MalformedLineError: pass -- Rob Gaddi, Highland Technology -- www.highlandtechnology.com Email address domain is currently out of order. See above to fix. -- https://mail.python.org/mailman/listinfo/python-list