Hi Alan,
As far as my understanding goes, re.findall without using "()" inside your 
pattern will return you a list of strings when you search something similar to 
the one shown below:
a="Bangalore, India"re.findall("[\w][\n]*",a)
Output:- ['B','a','n','g','a','l','o','r','e','I','n','d','i','a']
So the above output is a list of strings.

When you enclose your pattern within "()", it will return you the output as a 
list of tuples. The member of each tuple is a string.
a="Amherst, Massachusetts"re.findall("(Am)(herst)",a)Output:- [('Am','herst')]
So the above output is a list of tuples.
Let me know if you any questions.
RegardsSuhas

> Date: Wed, 6 Mar 2013 12:55:17 -0800
> From: [email protected]
> To: [email protected]; [email protected]
> Subject: Re: [Tutor] Fwd: findall() returns tuples or string?
> 
> 
> 
> >> I have some confusion regarding when findall returns a list of strings
> >> and when it returns a list of tuples.
> >> Would appreciate an explanation.
> >
> >re is not my strongest suite but I'll have a go.
> >
> >My understanding of how findall works is that it returns a list of matches. 
> >If groups are used in the pattern each match will be a tuple containing the 
> >groups (if there is only one group in the pattern it will be a tuple of only 
> >one element)
> 
> One nice trick/feature that I recently discovered is that it's possible to 
> "turn off" groups by using "?:"
> 
> >>> import re
> 
> >>> re.findall("(python(?:ic)?)", "python")  
> ['python']
> 
> >>> re.search("(python(?:ic)?)", "python").group(2)
> 
> Traceback (most recent call last):
>   File "<pyshell#15>", line 1, in <module>
>     re.search("(python(?:ic)?)", "python").group(2)
> IndexError: no such group
> >>> re.findall("(python(ic)?)", "python")
> [('python', '')]
> >>> re.findall("(python(ic)?)", "pythonic")
> [('pythonic', 'ic')]
> 
> 
> Thought it'd be nice to share this. ;-)
> 
> 
> Regards,
> Albert-Jan
> 
> _______________________________________________
> Tutor maillist  -  [email protected]
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
                                          
_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to