[Python-3000] Droping find/rfind?

Nick Coghlan ncoghlan at gmail.com
Thu Aug 24 13:48:22 CEST 2006

Walter Dörwald wrote:
> Guido van Rossum wrote:
>> I don't find the current attempts to come up with a better substring
>> search API useful.
>> [...]
>> I appreciate the criticism on the patch -- clearly it's not ready to
>> go in, and more work needs to be put in to actually *improve* the
>> code, using [r]partition()  where necessary, etc. But I'm strenghtened
>> in the conclusion that find() is way overused and we don't need yet
>> another search primitive. TOOWTDI.
> I don't see what's wrong with find() per se. IMHO in the following use
> case find() is the best option: Find the occurrences of "{foo bar}"
> patterns in the string and return both parts as a tuple. Return (None,
> "text") for the parts between the patterns, i.e. for
>    'foo{spam eggs}bar{foo bar}'
> return
>    [(None, 'foo'), ('spam', 'eggs'), (None, 'bar'), ('foo', 'bar')]

With a variety of "view types", that work like the corresponding builtin type, 
but reference the original data structure instead of creating copies, then you 
could use partition without having to worry about poor performance on large 

def splitview(s):
     rest = strview(s)
     while 1:
         prefix, found, rest = rest.partition("{")
         if prefix:
             yield (None, str(prefix))
         if not found:
         first, found, rest = rest.partition("{")
         if not found:
         second, found, rest = rest.partition("{")
         if not found:
         yield (str(first), str(second))


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-3000 mailing list