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 26 Python
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
Python中对元组和列表按条件进行排序的方法示例
Nov 10 Python
Python编程中的文件读写及相关的文件对象方法讲解
Jan 19 Python
TensorFlow实现卷积神经网络
May 24 Python
Python使用matplotlib绘制随机漫步图
Aug 27 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
对python mayavi三维绘图的实现详解
Jan 08 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 Python
python excel多行合并的方法
Dec 09 Python
PyTorch dropout设置训练和测试模式的实现
May 27 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 Rename 更改文件、文件夹名称
2011/05/24 PHP
php各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
php构造函数的继承方法
2015/02/09 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
node.js超时timeout详解
2014/11/26 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
讲解Python中if语句的嵌套用法
2015/05/14 Python
python中Apriori算法实现讲解
2017/12/10 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
python opencv调用笔记本摄像头
2019/08/28 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
美国时尚大码女装购物网站:Avenue
2019/05/24 全球购物
Oracle的内存结构(Memory structures)
2015/06/10 面试题
期末学生评语大全
2014/04/24 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
美术教师个人工作总结
2015/02/06 职场文书
车间班组长竞聘书
2015/09/15 职场文书
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android