[Python-ideas] startsin ?
Paul Moore
p.f.moore at gmail.com
Fri Sep 30 17:51:39 CEST 2011
On 30 September 2011 16:30, Tarek Ziadé <ziade.tarek at gmail.com> wrote:
> Hey,
>
> not sure how people do this, or if I missed something obvious in the
> stdlib, but I often have this pattern:
>
> starts = ('a', 'b', 'c')
> somestring = 'acapulco'
>
> for start in starts:
> if somestring.startswith(start):
> print "yeah"
>
>
> So what about a startsin() method, that would iterate over a sequence:
>
> if somestring.startsin('a', 'b', 'c'):
> print "yeah"
if any(somestring.startswith(s) for s in starts)
print "yeah"
> Implementing it in C should be faster as well
Probably slightly, but how critical is speed here?
> same deal with .endswith I guess
A benefit of the any() recipe is that it generalises, so you don't
need to have endsin as well, (or whatever else people might think
of...)
But it is a common pattern, and there's also the case where you want
to know *which" pattern matched, which any can't do, so there may be
some mileage in this. But it might be simpler just to accept that
you've reached the point where a simple regex is the best answer. Yes,
now you have two problems, I know :-)
Paul.
More information about the Python-ideas
mailing list