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绘图方法实例入门
May 19 Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
Python里字典的基本用法(包括嵌套字典)
Feb 27 Python
ZABBIX3.2使用python脚本实现监控报表的方法
Jul 02 Python
Django模板语言 Tags使用详解
Sep 09 Python
numpy:np.newaxis 实现将行向量转换成列向量
Nov 30 Python
django框架F&Q 聚合与分组操作示例
Dec 12 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
Dec 04 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
php模板之Phpbean的目录结构
2008/01/10 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
MooTools 1.2介绍
2009/09/14 Javascript
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
JS array数组检测方式解析
2020/05/19 Javascript
python脚本实现查找webshell的方法
2014/07/31 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
python 判断网络连通的实现方法
2018/04/22 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
公关关系专员的自我评价分享
2013/11/20 职场文书
文明城市标语
2014/06/16 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
教师读书活动心得体会
2016/01/14 职场文书
创业计划书之家教中心
2019/09/25 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
Oracle中日期的使用方法实例
2022/07/07 Oracle