Is there a command that returns the number of substrings in a string?
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Tue Oct 27 04:09:07 EDT 2009
En Tue, 27 Oct 2009 04:31:22 -0300, Gerard Flanagan <grflanagan at gmail.com>
escribió:
> alex23 wrote:
>> Gerard Flanagan <grflana... at gmail.com> wrote:
>>> def count(text, *args):
>> Other than the ability to handle multiple substrings, you do realise
>> you've effectively duplicated str.count()?
>
> I realise that calling this count function with a single argument would
> be functionally identical to calling str.count(), yes. But I can imagine
> the situation of wanting to find multiple (disjoint) substrings. Is
> there a reason for preferring multiple calls to str.count() in such a
> case? Or is there a more obvious approach?
There is a more efficient algorithm (Aho-Corasick) which computes all
occurences of a set of substrings inside a given string at once. It
*should* be faster than repeatly calling str.find for every substring, and
faster than using regular expressions too. (note that you get not only the
count of occurences, but their positions too).
I've seen a couple implementations for Python; if they're *actually*
faster is to be determined...
--
Gabriel Genellina
More information about the Python-list
mailing list