Python实现像awk一样分割字符串


Posted in Python onSeptember 15, 2020

若你使用过 Shell 中的 awk 工具,会发现用它来分割字符串是非常方便的。特别是多个连续空格会被当做一个处理。

[root@localhost ~]# cat demo.txt
hello world
[root@localhost ~]#
[root@localhost ~]# awk '{print$1,$2}' demo.txt
hello world

可是转换到 Python 上面来呢?结果可能是这样的。

>>> msg='hello world'
>>> msg.split(' ')
['hello', '', '', '', 'world']

与我预想的结果不符,多个空格会被分割多次。

那有什么办法可以达到 awk 一样的效果呢?

有两种方法。

第一种方法

不加参数,这种只适用于将多个空格当成一个空格处理,如果不是以空格为分隔符的场景,这种就不适用了。

>>> msg='hello world'
>>> msg.split()
['hello', 'world']

第二种方法

使用 filter 来辅助,这种适用于所有的分隔符,下面以 - 为分隔符来举例。

>>> msg='hello----world'
>>> msg.split('-')
['hello', '', '', '', 'world']
>>>
>>> filter(None, msg.split('-'))
['hello', 'world']

是不是很神奇,filter 印象中第一个参数接收的是 函数,这里直接传 None 居然有奇效。

查看了注释,原来是这个函数会适配 None 的情况,当第一个参数是None的时候,返回第二个参数(可迭代对象)中非空的值,非常方便。

Python实现像awk一样分割字符串

换用函数的写法,可以这样

>>> msg='hello----world'
>>> msg.split('-')
['hello', '', '', '', 'world']
>>>
>>> filter(lambda item: True if item else False, msg.split('-'))
['hello', 'world']

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

Python 相关文章推荐
粗略分析Python中的内存泄漏
Apr 23 Python
Python fileinput模块使用实例
Jun 03 Python
Python实现求数列和的方法示例
Jan 12 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
Django项目中使用JWT的实现代码
Nov 04 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
python脚本第一行如何写
Aug 30 Python
Python datetime 如何处理时区信息
Sep 02 Python
python中not、and和or的优先级与详细用法介绍
Nov 03 Python
详解Pycharm安装及Django安装配置指南
Sep 15 #Python
Java Unsafe类实现原理及测试代码
Sep 15 #Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 #Python
Python requests上传文件实现步骤
Sep 15 #Python
python -v 报错问题的解决方法
Sep 15 #Python
基于Python正确读取资源文件
Sep 14 #Python
Django框架安装及项目创建过程解析
Sep 14 #Python
You might like
php 常用字符串函数总结
2008/03/15 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
基于nodejs实现微信支付功能
2017/12/20 NodeJs
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python获取android设备的GPS信息脚本分享
2015/03/06 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
C语言面试题
2015/10/30 面试题
青年教师培训方案
2014/02/06 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
2014年党小组工作总结
2014/12/20 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
校长新学期致辞
2015/07/30 职场文书
python 网络编程要点总结
2021/06/18 Python
Python制作动态字符画的源码
2021/08/04 Python
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python