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设置windows桌面壁纸的实现代码
Jan 28 Python
跟老齐学Python之变量和参数
Oct 10 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
Apr 05 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
python实现图片文件批量重命名
Mar 23 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 Python
pytorch 实现多个Dataloader同时训练
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
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
js字符编码函数区别分析
2011/12/28 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
centos下更新Python版本的步骤
2013/02/12 Python
Python 专题一 函数的基础知识
2017/03/16 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
经典c++面试题四
2015/05/14 面试题
德尔福集团DELPHI的笔试题
2012/02/22 面试题
干部培训自我鉴定
2014/01/22 职场文书
装饰工程师岗位职责
2014/06/08 职场文书
银行授权委托书范本
2014/10/04 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript