[Python-3000] Droping find/rfind? (original) (raw)
Josiah Carlson jcarlson at uci.edu
Wed Aug 23 21:56:21 CEST 2006
- Previous message: [Python-3000] Droping find/rfind?
- Next message: [Python-3000] Droping find/rfind?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Steven Bethard" <steven.bethard at gmail.com> wrote:
Steven Bethard wrote: > Could you post a simple example or two?
Josiah Carlson wrote: > index = text.find(...) > if index >= 0: > ... > [snip] > index = 0 > while 1: > index = text.find(..., index) > if index == -1: > break > ... Thanks. So with your search() function, these would be something like: indices = text.search(pattern, count=1) if indices: index, = indices ... and for index in text.search(pattern): ... if I understood the proposal right.
Yes, you understood my (strawman) proposal correctly. The former could even be shortened to:
for index in text.search(pattern, count=1):
...... if there wasn't an else clause in the original search. Note that my point in the proposing of search was to say:
- [r]index is cumbersome
- [r]find can be error-prone for newbies due to the -1 return
- the functionality seems to be useful (otherwise neither would exist)
- let us unambiguate [r]find if possible, because it is the better of the two (in my opinion)
- or instead of 4, replace both of them with searh
People seem to like the #5 option, even though it was not my intent by posting search originally. Given that some people like it, I'm now of the opinion that if [r]find is going, then certainly [r]index should go because it suffers from being more cumbersome to use and has a similar class of bugs, and if both go, then we should have something to replace them. As a replacement, search lacks the exception annoyance of index, has an unambiguous return value, and naturally supports iterative find calls.
Given search as a potential replacement, about the only question is whether count should default to sys.maxint or 1. The original description included count=sys.maxint, but if we want to use it as a somewhat drop-in replacement for find and index, then it would make more sense for it to have count=1 as a default, with some easy to access count argument to make it find all of them.
- Josiah
- Previous message: [Python-3000] Droping find/rfind?
- Next message: [Python-3000] Droping find/rfind?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]