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爬虫抓站的实用技巧
Aug 09 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
Python干货:分享Python绘制六种可视化图表
Aug 27 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
python爬取王者荣耀全皮肤的简单实现代码
Jan 31 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
用python查找统一局域网下ip对应的mac地址
Jan 13 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 Python
详解如何用Python实现感知器算法
Jun 18 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
php实现的返回数据格式化类实例
2014/09/22 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
php处理带有中文URL的方法
2016/07/11 PHP
JS获取父节点方法
2009/08/20 Javascript
js tab效果的实现代码
2009/12/26 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
Python的print用法示例
2014/02/11 Python
python生成密码字典的方法
2018/07/06 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
python关于调用函数外的变量实例
2019/12/26 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
如何基于python实现不邻接植花
2020/05/01 Python
python与idea的集成的实现
2020/11/20 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
回门宴父母答谢词
2014/01/26 职场文书
优秀实习生感言
2014/03/01 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
nginx部署多前端项目的几种方法
2021/05/25 Servers
关于python爬虫应用urllib库作用分析
2021/09/04 Python