You should use a module for parsing a structured text, for example, pyparsing. Basically the grammar should look like this:
import pyparsing as pp
s = u'[<Word: colors>, <Word: red>, <Word: blue>, <Word: yellow>, <Word: green>, <Word: orange>, <Word: purple>, <Word: brown>, <Word: white>, <Word: black>, <Word: grey>]'
term = pp.Literal('<') + pp.Literal('Word') + pp.Literal(':') + pp.Word(pp.alphas) + pp.Literal('>')
expr = pp.Literal('[') + term + pp.ZeroOrMore( pp.Literal(',') + term ) + pp.Literal(']')
r = expr.parseString(s)
and then retrieve parse results from r. Check examples on the project site. Probably you'll need to set up specific parser callbacks on the items you wish to extract using setParseAction():
import pyparsing as pp
s = u'[<Word: colors>, <Word: red>, <Word: blue>, <Word: yellow>, <Word: green>, <Word: orange>, <Word: purple>, <Word: brown>, <Word: white>, <Word: black>, <Word: grey>]'
colors = []
term = pp.Literal('<') + pp.Literal('Word') + pp.Literal(':') + pp.Word(pp.alphas).setParseAction(lambda s: colors.append(s[0])) + pp.Literal('>')
expr = pp.Literal('[') + term + pp.ZeroOrMore( pp.Literal(',') + term ) + pp.Literal(']')
r = expr.parseString(s)
now colors contains the list of colors and so on...
"[<Word: colors>, <Word: red>, <Word: blue>, <Word: yellow>, <Word: green>, <Word: orange>, <Word: purple>, <Word: brown>, <Word: white>, <Word: black>, <Word: grey>] "