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中pygame的mouse鼠标事件用法实例
Nov 11 Python
python制作小说爬虫实录
Aug 14 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
Python读写/追加excel文件Demo分享
May 03 Python
pygame游戏之旅 按钮上添加文字的方法
Nov 21 Python
浅谈python常用程序算法
Mar 22 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
调试Django时打印SQL语句的日志代码实例
Sep 12 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
python基于event实现线程间通信控制
Jan 13 Python
python3读取autocad图形文件.py实例
Jun 05 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 24 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实现的连贯操作、链式操作实例
2014/07/08 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
js的touch事件的实际引用
2014/10/13 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python 从远程服务器下载东西的代码
2013/02/10 Python
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python去除列表中重复元素的方法
2015/03/20 Python
python实现识别相似图片小结
2016/02/22 Python
Python操作mongodb的9个步骤
2018/06/04 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
毕业生如何写自我鉴定
2014/03/15 职场文书
2014年食堂工作总结
2014/11/20 职场文书
周年庆典答谢词
2015/01/20 职场文书
储备店长岗位职责
2015/04/14 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
nginx+lua单机上万并发的实现
2021/05/31 Servers