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

唯一の問題が空の値にある場合は、 first 内で確認できます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 に答える