Re: Stack Overflow moderator “animuson”
Chris Angelico
rosuav at gmail.com
Wed Jul 10 05:39:05 EDT 2013
On Wed, Jul 10, 2013 at 7:01 PM, Mats Peterson <matsp999 at aim.com> wrote:
> Chris Angelico <rosuav at gmail.com> wrote:
>> I know what regular expressions are. I've used them in Perl, PHP,
>> JavaScript, Python, C++, Pike, and numerous text editors (which may
>> have been backed by one of the above languages, or may have been
>> something else). Doesn't change the fact that I have no idea what the
>> significance is of your post.
>>
>> ChrisA
>
> You do? And you haven't noticed the inferior performance of regular
> expressions in Python compared to Perl? Then you obviously haven't
> used them a lot.
That would be correct. Why have I not used them all that much? Because
Python has way better ways of doing many things. Regexps are
notoriously hard to debug, largely because a nonmatching regex can't
give much information about _where_ it failed to match, and when I
parse strings, it's more often with (s)scanf notation instead - stuff
like this (Pike example as Python doesn't, afaik, have scanf support):
> data="Hello, world! I am number 42.";
> sscanf(data,"Hello, %s! I am number %d.",foo,x);
(3) Result: 2
> foo;
(4) Result: "world"
> x;
(5) Result: 42
Or a more complicated example:
sscanf(Stdio.File("/proc/meminfo")->read(),"%{%s: %d%*s\n%}",array data);
mapping meminfo=(mapping)data;
That builds up a mapping (Pike terminology for what Python calls a
dict) with the important information out of /proc/meminfo, something
like this:
([
"MemTotal": 2026144,
"MemFree": 627652,
"Buffers": 183572,
"Cached": 380724,
..... etc etc
])
So, no. I haven't figured out that Perl's regular expressions
outperform Python's or Pike's or SciTE's, because I simply don't need
them all that much. With sscanf, I can at least get a partial match,
which tells me where to look for the problem.
ChrisA
More information about the Python-list
mailing list