展平嵌套列表

时间:2012-08-14 11:20:53

标签: python list

我有数百行数据,如下所示:

[[u' 16 '], [u'1x23'], [u'Mr Test', u' (5)'], [u'John Smith'], [u'54.5'], [], [u'10%'], [u'40%'], [u'$26,503']]

有些值是嵌套的,有些也是空的。

我正试图按摩它是这样的:

['16', '1x23', 'Mr Test', '(5)', 'John Smith', '54.5', '', '10%', '40%', '$26,503']

我在这里尝试了一些像扁平化一样的想法,包括以下例程:

def traverse(o, tree_types=(list, tuple)):
    if isinstance(o, tree_types):
        for value in o:
            for subvalue in traverse(value):
                yield subvalue
    else:
        yield o

这适用于我已经解析过的一些表,但只有在没有空值的情况下。

3 个答案:

答案 0 :(得分:2)

试试这个,

sum((item or [""] for item in a), [])

怪啊?

答案 1 :(得分:1)

这将解决问题(即使是空值):

import operator
def flatten(a):
    return reduce(operator.add, a)

答案 2 :(得分:0)

如果你唯一的问题是空值,你可以先在if

内查看
def traverse(o, tree_types=(list, tuple)):
    if isinstance(o, tree_types):
        if len(o) == 0:
            yield ''
        for value in o:
            for subvalue in traverse(value):
                yield subvalue
    else:
        yield o