breaking out of outer loops
Rob Gaddi
rgaddi at highlandtechnology.invalid
Mon Mar 7 18:29:02 EST 2016
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.
More information about the Python-list
mailing list