On Wed, 2011-10-05 at 07:31 -0700, Ethan Furman wrote:
Ron Adam wrote:
On Wed, 2011-10-05 at 19:08 +1300, Greg Ewing wrote:
Guido van Rossum wrote:
I'm out of ideas here. But of all these, str.find is probably still the worst -- I've flagged bugs caused by it too many times to count. Could a with-statement be used here somehow?
with finding(x, s) as i: ...
Or an iterator.
for i in finding(x, s): ...
How would the case of not found be handled in either of these proposals?
with finding(x, s) as i: ... if not i: # same problem as str.find, unless i is not a simple int
I'll let Nick answer this one because I'm not sure about it.
for i in finding(x, s): ... else: # unless for loop has a break, this will happen... # not a problem until you want more than just the first # occurrence of s in x
for i in finding(x, s): if i > 25: break <build or get a result> else: return result raise(ValueError("string 's' had an 'x' after position 25") Cheers, Ron