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 相关文章推荐
在Django的视图中使用form对象的方法
Jul 18 Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 Python
python requests post多层字典的方法
Dec 27 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
python实现证件照换底功能
Aug 20 Python
TensorFlow tf.nn.conv2d实现卷积的方式
Jan 03 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
详细分析Python垃圾回收机制
Jul 01 Python
通过案例解析python鸭子类型相关原理
Oct 10 Python
Python中基础数据类型 set集合知识点总结
Aug 02 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php正则
2006/07/07 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
python处理PHP数组文本文件实例
2014/09/18 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
详解python的super()的作用和原理
2020/10/29 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
开展批评与自我批评发言材料
2014/05/15 职场文书
学雷锋宣传标语
2014/06/25 职场文书
争先创优心得体会
2014/09/12 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
汽车转让协议书范本
2014/12/07 职场文书
环保建议书作文500字
2015/09/14 职场文书
九年级语文教学反思
2016/03/03 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏