[Python-3000] Droping find/rfind? (original) (raw)
David Hopwood david.nospam.hopwood at blueyonder.co.uk
Thu Aug 24 22:41:43 CEST 2006
- Previous message: [Python-3000] Droping find/rfind?
- Next message: [Python-3000] find -> index patch
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Walter Dörwald wrote: [...]
Using find(), the code looks like this:
def splitfind(s): pos = 0 while True: posstart = s.find("{", pos) if posstart < 0: break posarg = s.find(" ", posstart) if posarg < 0: break posend = s.find("}", posarg) if posend < 0: break prefix = s[pos:posstart] if prefix: yield (None, prefix) yield (s[posstart+1:posarg], s[posarg+1:posend]) pos = posend+1 rest = s[pos:] if rest: yield (None, rest) Using index() looks worse to me. The code is buried under the exception handling: def splitindex(s): pos = 0 while True: try: posstart = s.index("{", pos) except ValueError: break try: posarg = s.index(" ", posstart) except ValueError: break try: posend = s.find("}", posarg) except ValueError: break
try:
posstart = s.index("{", pos)
posarg = s.index(" ", posstart)
posend = s.find("}", posarg)
except ValueError:
breakis shorter and clearer than the version using 'find'.
-- David Hopwood <david.nospam.hopwood at blueyonder.co.uk>
- Previous message: [Python-3000] Droping find/rfind?
- Next message: [Python-3000] find -> index patch
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]