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与js)两种实现
Feb 21 Python
Python操作列表的常用方法分享
Feb 13 Python
详解Python 函数如何重载?
Apr 23 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
应用OpenCV和Python进行SIFT算法的实现详解
Aug 21 Python
Python pip 安装与使用(安装、更新、删除)
Oct 06 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 Python
python实现QQ邮箱发送邮件
Mar 06 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
Mar 31 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
python图像常规操作
2017/11/11 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
python中取绝对值简单方法总结
2020/07/24 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
日本无添加化妆品:HABA
2016/08/18 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
物流专业求职信
2014/06/30 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫
Go语言特点及基本数据类型使用详解
2022/03/21 Golang