[EMAIL PROTECTED] wrote: >hi >say i have string like this >astring = 'abcd efgd 1234 fsdf gfds abcde 1234' >if i want to find which postion is 1234, how can i achieve this...? i >want to use index() but it only give me the first occurence. I want to >know the positions of both "1234" >thanks > > > The regular expression module (called re) has a function (named finditer) that gives you what you want here.
The finditer function will find all matches of a pattern in a string and return an iterator for them. You can loop through the iterator and do what you want with each occurrence. >>> import re >>> astring = 'abcd efgd 1234 fsdf gfds abcde 1234' >>> pattern = '1234' Perhaps just find the starting point of each match: >>> for match in re.finditer(pattern,astring): ... print match.start() ... 10 31 Or the span of each match: >>> for match in re.finditer(pattern,astring): ... print match.span() ... (10, 14) (31, 35) Or use list comprehension to build a list of starting positions: >>> [match.start() for match in re.finditer(pattern,astring)] [10, 31] And so on .... Of course, if you wish, the re module can work with vastly more complex patterns than just a constant string like your '1234'. Gary Herron -- http://mail.python.org/mailman/listinfo/python-list