How best to write this if-else?
Mick
vsl6 at paradise.net.nz
Sat Apr 21 17:26:39 EDT 2001
you could try bound methods
The following is probably not the nicest of ways but it shows you how to
keep the abstraction in the loop.
import re
def printRes1(m):
print m.group(1)
def printRes2(m):
print m.group(1)
print m.group(2)
re1 = (re.compile("demo.*"),printRes1)
re2 = (re.compile("testing(.*)for(.*)"),printRes2)
all = [re1,re2]
str = "testing things for now"
for i in all:
ma = i[0].match(str)
if ma:
i[1](ma)
Mick
-----Original Message-----
From: python-list-admin at python.org
[mailto:python-list-admin at python.org]On Behalf Of Roy Smith
Sent: Sunday, April 22, 2001 9:02 AM
To: python-list at python.org
Subject: Re: How best to write this if-else?
"Ingo Wilken" <Ingo.Wilken at Informatik.Uni-Oldenburg.DE> wrote:
> for e in [e1, e2, e3]:
> m = e.match(line)
> if m:
> text = m.group(1)
> break
> else:
> no match found
OK, that's pretty neat, but I realize now that my example was
unintentionally misleading. The problem is not quite as regular as I made
it out to be.
What if I want to execute different code depending on which expression I
matched? Something along the lines of (pseudocode):
if (m = e1.match(line)):
text1 = m.group(1)
do_complicated_processing (text1)
elif (m = e2.match(line)):
text1 = m.group(1)
text2 = m.group(2)
print text1, text2
elif (m = e3.match(line)):
return
--
http://mail.python.org/mailman/listinfo/python-list
More information about the Python-list
mailing list