A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-list/2001-April/080350.html below:

How best to write this if-else?

How best to write this if-else?Tim Peters tim.one at home.com
Sat Apr 21 16:41:32 EDT 2001
[Roy Smith]
> I want to test a line to see if it matches any of a bunch of pre-
> compile regexes.  I also want to capture the match objects.  What
> really want to write is something like this (pseudo-code):
>
> e1 = re.compile ('...')
> e2 = re.compile ('...')
> e3 = re.compile ('...')
>
> line = file.readline()
> if (m = e1.match (line)):
>    text = m.group(1)
> elif (m = e2.match (line)):
>    text = m.group(1)
> elif (m = e3.match (line)):
>    text = m.group(1)
> ...

Na, you really want something like this:

regexps = [re.compile('...'),
           re.compile('...'),
           ...
           re.compile('...')]

line = file.readline()
for r in regexps:
    match = r.match(line)
    if match:
        break

# Now, assuming regexps isn't an empty list, match is None if and only
# if no regexp matched.

if match:
    text = match.group(1)
else:
    text = "There's a lobster on the loose!"

Now when your set of regexps changes, you need only fiddle the regexps list;
no need to touch the *code* ever again.  If you do this a lot, write a little
class that takes a list of regexps in the constructor, and give it a (say)
.find_first_match(line) method.

iteration-beats-embedded-assignments-by-a-long-shot-ly y'rs  - tim



More information about the Python-list mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4