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+mysql实现简单的web程序
Sep 11 Python
Python实现将绝对URL替换成相对URL的方法
Jun 28 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
python将list转为matrix的方法
Dec 12 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
python实现猜单词游戏
May 22 Python
python从PDF中提取数据的示例
Oct 30 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
点评山进PR-D3L三波段收音机
2021/03/02 无线电
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
Jquery 常用方法经典总结
2010/01/28 Javascript
js对象的比较
2011/02/26 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
jQuery实现多级下拉菜单jDropMenu的方法
2015/08/28 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
Vue项目引进ElementUI组件的方法
2018/11/11 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
python 中字典嵌套列表的方法
2018/07/03 Python
python十进制转二进制的详解
2020/02/07 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
应用心理学个人的求职信
2013/12/08 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
2014年教师节活动总结
2014/08/29 职场文书
工作自我推荐信范文
2015/03/25 职场文书
小学少先队活动总结
2015/05/08 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书