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 yield使用方法示例
Dec 04 Python
Python中动态获取对象的属性和方法的教程
Apr 09 Python
Python+MongoDB自增键值的简单实现
Nov 04 Python
Python元字符的用法实例解析
Jan 17 Python
使用python Telnet远程登录执行程序的方法
Jan 26 Python
python dlib人脸识别代码实例
Apr 04 Python
Python的bit_length函数来二进制的位数方法
Aug 27 Python
Python tcp传输代码实例解析
Mar 18 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
Python3内置函数chr和ord实现进制转换
Jun 05 Python
Python importlib模块重载使用方法详解
Oct 13 Python
通过代码简单了解django model序列化作用
Nov 12 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之数据库操作详解及乱码解决!
2007/01/02 PHP
dedecms模版制作使用方法
2007/04/03 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
php中动态修改ini配置
2014/10/14 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
python实现udp数据报传输的方法
2014/09/26 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
使用Python写一个小游戏
2018/04/02 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
Python GUI编程完整示例
2019/04/04 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
入党转预备思想汇报
2014/01/07 职场文书
《巨人的花园》教学反思
2014/02/12 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
详解JVM系列之内存模型
2021/06/10 Javascript
关于EntityWrapper的in用法
2022/03/22 Java/Android
基于Python实现射击小游戏的制作
2022/04/06 Python