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爬虫之抓取糗事百科代码分享
Nov 06 Python
Django rest framework基本介绍与代码示例
Jan 26 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
django Serializer序列化使用方法详解
Oct 16 Python
Python判断变量名是否合法的方法示例
Jan 28 Python
新年快乐! python实现绚烂的烟花绽放效果
Jan 30 Python
详解python爬虫系列之初识爬虫
Apr 06 Python
Mac安装python3的方法步骤
Aug 09 Python
利用keras加载训练好的.H5文件,并实现预测图片
Jan 24 Python
Python yield生成器和return对比代码实例
Apr 20 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 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+mysql写的简单留言本实例代码
2008/07/25 PHP
php db类库进行数据库操作
2009/03/19 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
javascript indexOf函数使用说明
2008/07/03 Javascript
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
JavaScript解析URL参数示例代码
2013/08/12 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
Python读取Excel的方法实例分析
2015/07/11 Python
python实现在字符串中查找子字符串的方法
2015/07/11 Python
Python Requests 基础入门
2016/04/07 Python
Python中的变量和作用域详解
2016/07/13 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
python实现双色球随机选号
2020/01/01 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
几道PHP的面试题
2012/05/19 面试题
售后前台接待岗位职责
2015/04/03 职场文书
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python