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代码检查工具pylint 让你的python更规范
Sep 05 Python
Python程序员鲜为人知但你应该知道的17个问题
Jun 04 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
Python的Django框架中if标签的相关使用
Jul 15 Python
Python编程实现的图片识别功能示例
Aug 03 Python
python修改list中所有元素类型的三种方法
Apr 09 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
Django框架表单操作实例分析
Nov 04 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
python关于变量名的基础知识点
Mar 03 Python
Python爬取某平台短视频的方法
Feb 08 Python
python中pymysql包操作数据库方法
Apr 19 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调用三种数据库的方法(3)
2006/10/09 PHP
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
jQuery each()方法的使用方法
2010/03/18 Javascript
js输出列表实现代码
2010/09/12 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
React传值 组件传值 之间的关系详解
2019/08/26 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
python使用PyQt5的简单方法
2019/02/27 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
党校自我鉴定范文
2013/10/02 职场文书
酒店保洁主管岗位职责
2013/11/28 职场文书
目标责任书范文
2014/04/14 职场文书
理想演讲稿范文
2014/05/21 职场文书
户籍证明模板
2014/09/28 职场文书
公司回复函格式
2015/07/14 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python