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之编写类之三子类
Oct 11 Python
Python 正则表达式(转义问题)
Dec 15 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
python 打印对象的所有属性值的方法
Sep 11 Python
Python中的探索性数据分析(功能式)
Dec 22 Python
python可视化实现KNN算法
Oct 16 Python
pyqt5 QlistView列表显示的实现示例
Mar 24 Python
python中使用input()函数获取用户输入值方式
May 03 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 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 inc文件使用的风险和注意事项
2013/11/12 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
php车辆违章查询数据示例
2016/10/14 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python3抓取中文网页的方法
2015/07/28 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python实现读取json文件到excel表
2017/11/18 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
灵泰克Java笔试题
2016/01/09 面试题
毕业生就业自荐信
2013/12/04 职场文书
顶岗实习接收函
2014/01/09 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
怎样写家长意见
2015/06/04 职场文书
培训简讯范文
2015/07/20 职场文书
六年级情感作文之500字
2019/10/23 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python