Dynamic text color

John Posner jjposner at optimum.net
Mon Jan 4 11:49:15 EST 2010


On Fri, 01 Jan 2010 21:01:04 -0500, Cousin Stanley  
<cousinstanley at gmail.com> wrote:

<snip>
>
>     I was not familiar with the re.finditer method
>     for searching strings ...

Stanley and Dave --

So far, we've just been using finditer() to perform standard-string  
searches (e.g. on the word "red"). Since Dave now wants to color multiple  
words the same color (e.g. the words in redList), we can use a single  
regular-expression search to locate *all* the words in a list. This  
eliminates the need to use a "for" loop to handle the list. Here's what I  
mean:

  >>> import re
  >>> s = "it is neither red nor crimson, but scarlet, you see"

########## individual searches

  >>> [matchobj.span() for matchobj in re.finditer("red", s)]
  [(14, 17)]
  >>> [matchobj.span() for matchobj in re.finditer("crimson", s)]
  [(22, 29)]
  >>> [matchobj.span() for matchobj in re.finditer("scarlet", s)]
  [(35, 42)]

########## one "swell foop"

  >>> redList = "red crimson scarlet".split()
  >>> redList_regexp = "|".join(redList)
  >>> redList_regexp
  'red|crimson|scarlet'
  >>> [matchobj.span() for matchobj in re.finditer(redList_regexp, s)]
  [(14, 17), (22, 29), (35, 42)]

-John



More information about the Python-list mailing list