Learning Python now coming from Perl

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Sun Dec 7 01:10:45 CET 2008


On Sat, 06 Dec 2008 14:15:28 -0500, Roy Smith wrote:

> 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?" :-)


I think you've answered your own question:

> 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.


Also:

* splitting pathnames and file extensions

* dealing with arbitrarily nested parentheses

* any time you need a full-blown parser (e.g. parsing HTML or XML)

* sanitizing untrusted user input
  ("I bet I can think of *every* bad input and detect them all 
  with this regex!")

* validating email addresses
  http://northernplanets.blogspot.com/2007/03/how-not-to-validate-email-addresses.html

* testing prime numbers
  http://jtauber.com/blog/2007/03/18/python_primality_regex/

* doing maths
  http://blog.stevenlevithan.com/archives/algebra-with-regexes
  http://weblogs.asp.net/rosherove/archive/2004/11/08/253992.aspx



There's probably more.


-- 
Steven



More information about the Python-list mailing list