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使用7z解压软件备份文件脚本分享
Feb 21 Python
Python数据类型详解(四)字典:dict
May 12 Python
分享6个隐藏的python功能
Dec 07 Python
python numpy 部分排序 寻找最大的前几个数的方法
Jun 27 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
Aug 31 Python
python判断数字是否是超级素数幂
Sep 27 Python
对python调用RPC接口的实例详解
Jan 03 Python
Pandas之MultiIndex对象的示例详解
Jun 25 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
为什么说Python可以实现所有的算法
Oct 04 Python
python如果快速判断数字奇数偶数
Nov 13 Python
Python super()函数使用及多重继承
May 06 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
第八节--访问方式
2006/11/16 PHP
PHP图片上传代码
2013/11/04 PHP
php图片缩放实现方法
2014/02/20 PHP
使用php清除bom示例
2014/03/03 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
JavaScript中的面向对象介绍
2012/06/30 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
Python之str操作方法(详解)
2017/06/19 Python
深入浅析python 中的匿名函数
2018/05/21 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
Django的models中on_delete参数详解
2019/07/16 Python
Python之变量类型和if判断方式
2020/05/05 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
最新远光软件笔试题面试题内容
2013/11/08 面试题
90后毕业生的求职信范文
2013/09/21 职场文书
计算机专业个人求职信范例
2013/09/23 职场文书
求职简历推荐信范文
2013/12/02 职场文书
文化产业实施方案
2014/06/07 职场文书
班级体育活动总结
2014/07/05 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书