Python过滤list中的空元素

故事背景

大概是我今天做数据分析时遇到的一个问题,需要将日志中的空行过滤掉,由于我是直接读入日志然后以换行符\n进行分割的,所以空行就会独立成一个元素存在于生成的list中。由于这种东西会使我的某几个函数无法正常工作,所以我需要将空元素过滤。

环境

Python 2.7

第一次尝试解决

我理所当然的想到了这样一种实现

line_raw = raw.split('\n')
line_raw.remove('')

结果我发现,如果列表中没有空元素,这个函数会报错。

错误信息如下

HocoradeiMac:nginx-apache-log hocora$ python ./log.py
Traceback (most recent call last):
  File "./log.py", line 153, in <module>
    reader = NginxLogReader('log.txt')
  File "./log.py", line 122, in __init__
    LogReader.__init__(self, raw)
  File "./log.py", line 81, in __init__
    self.line_raw.remove('')
ValueError: list.remove(x): x not in list

它告诉我,''不在list中,于是remove大法我直接扔掉。

然后我又想到一种办法,filter函数!

line_raw = filter(lambda x: x != '', raw.split('\n'))

嗯,工作的很正常,问题解决。

总结

其实这篇文章名字起的有问题,为何不叫python filter函数的应用。嗯...值得深思。