3

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

[[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

这适用于我已经解析过的一些表,但仅在没有空值时才有效。

4

3 回答 3

2

试试这个,

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

很奇怪吧?

于 2012-08-14T11:42:07.163 回答
1

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

import operator
def flatten(a):
    return reduce(operator.add, a)
于 2012-08-14T11:37:49.760 回答
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
于 2012-08-14T11:42:15.603 回答