Python如何优雅删除字符列表空字符及None元素

所属分类: 脚本专栏 / python 阅读数: 1450
收藏 0 赞 0 分享

这样的一段删除空字符串的代码:

def not_empty(s):
  return s and s.strip()
print(list(filter(not_empty, ['A', '', 'B', None,'C', ' '])))

  代码很简洁,效果嘛,可以丢到 Python在线工具|菜鸟教程 跑跑看,很 nice ~ 但是函数 not_empty 的返回值有点复杂,可以仔细分析一下:

  • - 假设字符串a和b作and运算 a and b:
  • - 若两者均为非空,则 a and b = b;
  • - 若两者均非None,且至少一个为空,即 '',则 a and b = ''
  • - 若至少一个等于None,则 a and b = None

  由于 strip() 函数本身是针对 str 类型进行操作的,所以当 s = None 时,用单独用一句 return s.strip() 会报 “ 'NoneType' object has no attribute 'strip'” 的错误;

  不过如果能保证 s[] 中不包含 None 成员,函数其实也可以直接写成

def not_empty(s):
  return s.strip()
print(list(filter(not_empty, ['A', '', 'B', 'C', ' '])))

  因此, return s and s.strip() 的作用在于排除 s = None 的情况,而不是排除 s = '' 或者 s = '  ' 的情况。

  但是为什么当 s = None 时,return s and s.strip()不会报错呢? 原因是当参与 and 运算的参数从前至后一旦出现一个不可能使得 and 为 True 的情况时,那么 and 运算就提前终止,又因为python本身是解释性语言,一边运行一边检查,还没有运行到 s and s.strip() 中的 s.strip() 时就已经运行完成这一句了(虚晃一枪),自然就不会报错了~

  最后用 lambda 表达式可以对上述程序作进一步封装:

def str_Nempty(s):
	return list(filter(lambda s: s and s.strip(),s))
print(str_Nempty(['A', '', 'B', 'C', ' ']))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Python用5行代码写一个自定义简单二维码

今天小编就为大家分享一篇关于Python用5行代码写一个自定义简单二维码的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

python中将正则过滤的内容输出写入到文件中的实例

今天小编就为大家分享一篇python中将正则过滤的内容输出写入到文件中的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

一看就懂得Python的math模块

今天小编就为大家分享一篇关于Python的math模块,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

python按时间排序目录下的文件实现方法

今天小编就为大家分享一篇python按时间排序目录下的文件实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python检测文件夹变化,并拷贝有更新的文件到对应目录的方法

今天小编就为大家分享一篇python检测文件夹变化,并拷贝有更新的文件到对应目录的方法。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

通过python将大量文件按修改时间分类的方法

今天小编就为大家分享一篇通过python将大量文件按修改时间分类的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题

今天小编就为大家分享一篇解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

python 对key为时间的dict排序方法

今天小编就为大家分享一篇python 对key为时间的dict排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

使用Python抓取豆瓣影评数据的方法

今天小编就为大家分享一篇关于使用Python抓取豆瓣影评数据的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Python实现Dijkstra算法

今天小编就为大家分享一篇关于Python实现Dijkstra算法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享
查看更多