Learning Python now coming from Perl
roy at panix.com
Sat Dec 6 20:15:28 CET 2008
In article <014a96e0$0$20670$c3e8da3 at news.astraweb.com>,
Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> wrote:
> On Sat, 06 Dec 2008 08:50:20 -0500, Roy Smith wrote:
> > For your first
> > project, pick something that's small enough that you think you could
> > tackle it in under 50 lines of Perl.
> Is there anything which *can't* be written in under 50 lines of Perl?
> Also, Perl REs are faster than Python REs, or so I'm told. Between the
> speed and the convenience, Perl programmers tend to use RE's for
> everything they can. Python programmers tend to use REs only for problems
> that *should* be solved with REs rather than *can* be solved with a RE.
Well, as an old-time unix hacker (who learned REs long before Perl
existed), my question to you would be, "Is there any problem which
*shouldn't* be solved with an RE?" :-)
It's easy to go nuts with REs, and create write-only code. On the other
hand, they are an extremely powerful tool. If you are wise in the ways of
RE-fu, they can not only be the most compact way to write something, but
also the most efficient and even the most comprehensible. Unfortunately,
REs seem to be regarded as some kind of monster these days and few people
take the time to master them fully. Which is a shame.
One really nice feature of REs in Python is the VERBOSE flag. It lets you
write some way-complicated REs in a way which is still easy for somebody to
read and understand. Python's raw strings, and triple-quoted strings, also
help reduce the sea of backslashes which often make REs seem much worse
than they really are.
One of the reasons REs don't get used in Python as much as in Perl is
because strings have useful methods like startswith(), endswith(), and
split(), and also the "in" operator. These combine to give you easy ways
to do many things you might otherwise do with REs.
More information about the Python-list