Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #104271

Re: breaking out of outer loops

From Rob Gaddi <rgaddi@highlandtechnology.invalid>
Newsgroups comp.lang.python
Subject Re: breaking out of outer loops
Date 2016-03-07 23:29 +0000
Organization A noiseless patient Spider
Message-ID <nbl2rt$2hb$1@dont-email.me> (permalink)
References <nbl1md$1lvd$1@gioia.aioe.org>

Show all headers | View raw


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.

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

breaking out of outer loops Fillmore <fillmore_remove@hotmail.com> - 2016-03-07 18:09 -0500
  Re: breaking out of outer loops Ian Kelly <ian.g.kelly@gmail.com> - 2016-03-07 16:17 -0700
    Re: breaking out of outer loops Fillmore <fillmore_remove@hotmail.com> - 2016-03-07 18:21 -0500
      Re: breaking out of outer loops Chris Kaynor <ckaynor@zindagigames.com> - 2016-03-07 15:42 -0800
      Re: breaking out of outer loops Chris Angelico <rosuav@gmail.com> - 2016-03-08 10:49 +1100
      Re: breaking out of outer loops Terry Reedy <tjreedy@udel.edu> - 2016-03-07 21:54 -0500
  Re: breaking out of outer loops Rob Gaddi <rgaddi@highlandtechnology.invalid> - 2016-03-07 23:29 +0000
    Re: breaking out of outer loops Fillmore <fillmore_remove@hotmail.com> - 2016-03-07 18:40 -0500
  Re: breaking out of outer loops Chris Angelico <rosuav@gmail.com> - 2016-03-08 10:47 +1100
  Re: breaking out of outer loops Fillmore <fillmore_remove@hotmail.com> - 2016-03-07 19:02 -0500
    Re: breaking out of outer loops Chris Angelico <rosuav@gmail.com> - 2016-03-08 11:08 +1100
      Re: breaking out of outer loops Fillmore <fillmore_remove@hotmail.com> - 2016-03-07 19:13 -0500
        Re: breaking out of outer loops Joel Goldstick <joel.goldstick@gmail.com> - 2016-03-07 19:21 -0500
  Re: breaking out of outer loops Mark Lawrence <breamoreboy@yahoo.co.uk> - 2016-03-08 00:36 +0000
  Re: breaking out of outer loops Mark Lawrence <breamoreboy@yahoo.co.uk> - 2016-03-08 03:45 +0000

csiph-web