[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