我有数百行数据,如下所示:
[[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
这适用于我已经解析过的一些表,但只有在没有空值的情况下。
答案 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