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 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
Python中的探索性数据分析(功能式)
Dec 22 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
keras 自定义loss model.add_loss的使用详解
Jun 22 Python
Python调用C语言程序方法解析
Jul 07 Python
pycharm永久激活超详细教程
Oct 29 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 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
一个查看session内容的函数
2006/10/09 PHP
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
[00:11]战神迅矛
2019/03/06 DOTA
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
linux面试题参考答案(4)
2014/09/21 面试题
工商学院毕业生个人自我评价
2013/09/19 职场文书
教师自荐信
2013/12/10 职场文书
黄继光的英雄事迹材料
2014/02/13 职场文书
小学家长评语大全
2014/04/16 职场文书
单位工作证明格式模板
2014/10/04 职场文书
三下乡活动心得体会
2016/01/23 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
python 实现图片特效处理
2022/04/03 Python