1

我有一个包含许多数据行的 excel 文件,但也有很多空格。主要问题是我在加权平均值之上有一天数据的常规平均值,然后是第二天的许多空白。因此,当我使用 xlrd 将其拉出时,我得到了一个非常混乱的数组。

我想我知道如何摆脱空白,但我的列表中有一些当天没有加权平均值的数据。所以我需要搜索我的列表并删除其后没有空格的任何值,然后在列表中搜索并删除所有空格。

例如我想要这个:

[754, 753.554, '', '', '', '', '', 653.455, '', '', 258, 235.6464, '' , '', '']

返回:

[753.554, 653.455, 235.6464]

有什么建议吗?

4

2 回答 2

2

其实这就够了:

data = filter(None, [754, 753.554, '', '', '', '', '', 653.455, '', '', 258, 235.6464, '' , '', ''])

假设这weighted average将是浮点数:

filter(lambda x: not isinstance(x, int),filter(None, a))

但是你也可以lambda x: not isinstance(x, int)用一个函数替换:

def is_not_weight_avg(x):
    # do stuff here
    # if it is w. avg.
    return x 

然后你可以把上面的行写成:

filter(is_weight_avg,filter(None, a)). 

这是 Python 中的一点函数式编程。解释:

b=range(1,11)

def is_odd(x):
   if x % 2:
      return 0
   else:
      return x
filter(is_odd, b)
>>> [2, 4, 6, 8, 10]
于 2013-09-20T14:23:14.973 回答
2
>>> l = [754, 753.554, '', '', '', '', '', 653.455, '',
         '', 258, 235.6464, '' , '', '']
>>> filter(None, [i for i, j in zip(l, l[1:] + ['']) if j == ''])
[753.554, 653.455, 235.6464]
于 2013-09-20T14:20:48.677 回答