In your current code, you iterate over a string that represents a list, so you get individual characters.
>>> from ast import literal_eval >>> l = [u'[190215]'] >>> l = [item for value in l for item in value] >>> l [u'[', u'1', u'9', u'0', u'2', u'1', u'5', u']']
It seems to me that you want to convert the internal string representation of the list into a flattened list, so here you are:
>>> l = [u'[190215]'] >>> l = [item for value in l for item in literal_eval(value)] >>> l [190215]
The above will only work when all internal lists are strings:
>>> l = [u'[190215]', u'[190216, 190217]'] >>> l = [item for value in l for item in literal_eval(value)] >>> l [190215, 190216, 190217] >>> l = [u'[190215]', u'[190216, 190217]', [12, 12]] >>> l = [item for value in l for item in literal_eval(value)] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/ast.py", line 80, in literal_eval return _convert(node_or_string) File "/usr/lib/python2.7/ast.py", line 79, in _convert raise ValueError('malformed string') ValueError: malformed string
source share