Newbie Question : "grep"

moogyd at yahoo.co.uk moogyd at yahoo.co.uk
Mon Mar 12 14:32:17 EDT 2007


On 12 Mar, 18:55, attn.steven.... at gmail.com wrote:
> On Mar 12, 10:01 am, "Erik Johnson" <nob... at invalid.com> wrote:
>
>
>
> > Sorry, I forgot to paste the modified version of my code in the post:. I
> > think this is the same behaviour:
>
> > for line in lines:
> >     if "placed" in line:
> >         if "i_a/i_b/ROM/" in line:
> >             pos = (line.split()[4]).split("_")[1]
> >             found = False
>
> >             for (tag, (start, end)) in tags:
> >                 if tag in line:
> >                     found = True
> >                     print "        i_a/i_b/ROM/%s [%i:%i] LOC =" %\
> >                         (pos, tag, start, end)
> >                     break
>
> >             if not found:
> >                 print "Error"
>
> Instead of using a sentinal value (i.e., found),
> one can use the 'else' clause of a 'for' loop...
>
> pos = (line.split()[4]).split("_")[1]
> for (tag, (start,end)) in tags:
>     if tag in line:
>         print "    i_a/i_b/ROM/%s [%i:%i] LOC=%s" %\
>             (pos,tag,start,end)
>         break
> else
>     print "Error"
>
> --
> Hope this helps,
> Steven

Thanks for the responses.

I had an inkling what the solution may be, but I wondering whether I
could avoid the nested loops (i.e. loop every line and then loop every
pattern), maybe using maps or list comprehensions (this is just
intellectual curiosity as the current solution obviously does the job.

Steven




More information about the Python-list mailing list