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常用模块用法分析
Sep 08 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
pygame学习笔记(5):游戏精灵
Apr 15 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
深入理解python函数递归和生成器
Jun 06 Python
Python获取某一天是星期几的方法示例
Jan 17 Python
python实时分析日志的一个小脚本分享
May 07 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
Python datetime 如何处理时区信息
Sep 02 Python
Django admin组件的使用
Oct 24 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 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简单系统查询模块代码打包下载
2008/06/07 PHP
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
2014/08/06 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
小程序自定义日历效果
2018/12/29 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
初学Python实用技巧两则
2014/08/29 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
Python遍历pandas数据方法总结
2018/02/09 Python
Python处理中文标点符号大集合
2018/05/14 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
python基于opencv检测程序运行效率
2019/12/28 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
自荐信格式范文
2013/10/07 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
2015年复活节活动总结
2015/02/27 职场文书