[Tutor] Fwd: findall() returns tuples or string?
Albert-Jan Roskam
fomcl at yahoo.com
Wed Mar 6 21:55:17 CET 2013
>> 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
More information about the Tutor
mailing list