On 25/11/2010 04:46, Phlip wrote:
HypoNt:

I need to turn a human-readable list into a list():

    print re.search(r'(?:(\w+), |and (\w+))+', 'whatever a, bbb, and
c').groups()

That currently returns ('c',). I'm trying to match "any word \w+
followed by a comma, or a final word preceded by and."

The match returns 'a, bbb, and c', but the groups return ('bbb', 'c').
What do I type for .groups() to also get the 'a'?

Please go easy on me (and no RTFM!), because I have only been using
regular expressions for about 20 years...

Try re.findall:

    >>> re.findall(r'(\w+), |and (\w+)', 'whatever a, bbb, and c')
    [('a', ''), ('bbb', ''), ('', 'c')]

You can get a list of strings like this:

>>> [x or y for x, y in re.findall(r'(\w+), |and (\w+)', 'whatever a, bbb, and c')]
    ['a', 'bbb', 'c']
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to