[Tutor] pattern searching

Shashwat Anand anand.shashwat at gmail.com
Sat Nov 7 03:12:34 CET 2009


@Bob: the solution seems promising, and it's fast. Thanks for the
improvement. However I would like to do a minor change to the code to
prevent it going to infinite loop.

import string

text = raw_input()
translationTable = string.maketrans(string.ascii_uppercase +
string.ascii_lowercase, 'u'*26 + 'l'*26)
translatedText = text.translate(translationTable)
start = 0
while True:
 start = translatedText.find('lul', start)
 if start >= 0:
  print text[start:start+3]
  start += 1
 else:
  break


On Sat, Nov 7, 2009 at 7:20 AM, bob gailer <bgailer at gmail.com> wrote:

> Ajith Gopinath wrote:
>
>> Hi,
>>
>> How to find out all the occuerence of a particular pattern like  in a long
>> text where a capital letter in between two small letters ('aBa','dAd' etc..)
>>
>
> The other proposals are all good. However if performance is a concern then
> I'd use string.maketran to create a translation table, then apply it to the
> text using translate, such that all lower case letters are translated to
> 'l', all upper case letters to 'u', then look for 'lul'.
>
> import string
> translationTable = string.maketrans(string.ascii_uppercase +
> string.ascii_lowercase, 'u'*26 + 'l'*26)
> translatedText = text.translate(translationTable)
> start = 0
> while True:
>  start = translatedText.find('lul', start)
>  if start >= 0:
>   print text[start:start+3]
>  else:
>   break
>
> Translate and find are both very fast.
>
> --
> Bob Gailer
> Chapel Hill NC
> 919-636-4239
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20091107/2e4bdfe7/attachment.htm>


More information about the Tutor mailing list