Python 如何像 awk一样分割字符串?

AWK中的字符串分割函数maxsplit解析 摘要:本文介绍了一个AWK自定义函数maxsplit,用于实现类似Python的字符串分割功能,允许指定最大分割次数。该函数支持三种分隔符类型:空格、单字符和正则表达式,并会处理各种边界情况。文章详细解析了函数实现逻辑,包括清空数组、处理不同分隔符类型和最大分割次数控制,同时提供了测试用例和预期输出。这个工具函数增强了AWK的字符串处理能力,特别适用于需要精确控制分割行为的场景。 阅读详情

本篇选自 Python黑魔法指南 -> 第一章 -> 第31节。

github仓库: https://github.com/iswbm/magic-python

magic-python 目前已经有 900+ 的 star 了,越来越多的人知道了它,从百度网盘的数据来看,已经有 将近 6000 的人下载了这本电子书。

--   正文开始  --


若你使用过 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的时候,返回第二个参数(可迭代对象)中非空的值,非常方便。

换用函数的写法,可以这样

>>> msg='hello----world'
>>> msg.split('-')
['hello', '', '', '', 'world']
>>>
>>> filter(lambda item: True if item else False, msg.split('-'))
['hello', 'world']

------end------

python 使用正则表达式按照多个空格分割字符的实例 今天小编就为大家分享一篇python 使用正则表达式按照多个空格分割字符的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 立即下载

相关推荐

静态时序分析(STA)_深入解析Data to Data Checks的零周期挑战

本文深入解析了静态时序分析(STA)中Data to Data Checks的核心概念与零周期挑战。重点探讨了当Setup要求值超过时钟周期时,工具如何调整发射沿,并导致Hold检查的发射与捕获沿“分裂”这一反直觉现象。文章通过案例详细解读了时序报告,并提供了通过调整约束或接受多周期保持两种策略来应对这一挑战,帮助工程师正确理解和处理此类复杂时序检查。

weixin_29204205的博客 353

python实现类似awk的简单功能

命令行的awk很方便,但灵活一点

自清的soft专栏 1万+

SAP软件外币评估系统配置与操作

文章摘要:本文详细介绍了SAP系统中外币评估的流程、策略及系统操作。外币评估是期末关账的重要环节,主要针对外币未清项目及资产/负债进行汇率重估,生成评估差异过账以反映真实财务状况。文中阐述了三种评估策略(不评估、增量评估、期末评估冲回)及适用场景,并提供了SAP系统外币评估的具体操作步骤(FAGL_FCV/FAGL_FC_VAL事务码)。同时,讲解了货币资金科目和未清项管理科目的评估差异处理方式,以及相关的系统配置(OB59、OBA1等)。文章还区分了已实现和未实现汇兑损益的会计处理,为企业外币业务管理提供

weixin_40672823的博客 1963

python3中执行awk命令

python3,awk

lepton126的专栏 2421

vue + video.js 加载多种视频流(HLS、FLV、RTMP、RTSP)

由于需要在一个项目内接入多种常用的视频流,所以接触到video.js,这里就做个记录。vue安装就不讲了,直接从项目开始了。RTSP格式已测试,无法成功播放,浏览器就识别不了STSP协议(提供两个解决方案:第一个是通过后端去转格式。第二个方案就是安装插件/中间件。目前想用浏览器直接播放RTSP格式流,没有其他更好的解决方法。

qq_17627195的博客 1万+

基因家族的鉴定-基于Windows系统上的HMMER

基因家族的鉴定-基于Windows系统上的HMMER。

liangjinghui123的博客 3252

python——awk命令(1)

原文链接:http://www.zsythink.net/archives/1374 awk是一个报告生成器,拥有强大的文本格式化的能力。可以把报告理解成“报表”或“表格”。利用awk的“文本格式化能力”将一些文本整理成我们想要的样子。 awk基本语法:awk [options] 'Pattern{Action}' file 从字面上理解 ,action指的就是动作,awk擅长文本格式化,并...

zhc794429974的博客 1万+

RH850从0搭建Autosar开发环境【1】- 如何创建Davinci Configurator配置工程

当我们在公司接触Autosar开发环境时,基本都是完整的Davinci Configurator的配置工程,我们只能修修补补。 从本章开始将手把手搭建Rh850基于Vector公司Davinci Configurator的autosar配置工程。主要涉及到OS,COM,DCMM,NVM,BSWM,ECUM等基本模块,包括Vlink,memap使用,XCP标定的实现等。基本是实现一个基础版的项目开发。包括后期的GreenHills编译问题处理,生成最终的Hex文件。

weixin_42412049的博客 1万+

python list倒序_Python基础笔记(6)

关键词:关键字、函数和方法,列表,元祖,字典,字符串,公共方法1.关键字、函数和方法关键字 是 Python 内置的、具有特殊意义的标识符函数 封装了独立功能,可以直接调用对象.方法名(参数)方法 和函数类似,同样是封装了独立的功能方法 需要通过 对象 来调用,表示针对这个 对象 要做的操作对象.方法名(参数)2.列表(List)专门用于存储 一串 信息 列表用 [] 定义,数据 之间使用 , 分...

weixin_39642998的博客 292

【数据集】全球陆地表面反照率Albedo

【数据集】全球陆地表面反照率Albedo

WW、forever的博客 1454

辉芒微教程第七篇《PWM与PWM3调节LED灯的亮度》

这个其实就是PR3L = 128设置的,由于我们刚刚寄存器设置了8位模式,其设置的范围就是0-255,而128/255≈50%左右,因此PR3L就是我们的占空比调节的寄存器,我们可以通过它来调节占空比,大家可以试试它占空比设置10%,30%,60%来看看它的不同效果,灯的亮度是肯定不一样的,如果有条件的朋友,可以购买一款逻辑分析仪去看他的占空比。平平无期的这个东西有什么东东用,貌似是没什么用,只是一个概念而已,是不是不同设备可以设置1秒,3秒,10秒的周期就行?但是它占空比为什么是50%,怎么得来的?

qq_41809823的博客 827

awk 简单使用指南,这些Python高级必会知识点你能答出来几个

我们再来看一个统计各个 connection 状态的用法:(我们可以看到一些编程的影子了,大家都是程序员我就不解释了。注意其中的数组的用法)④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)① 2000多本Python电子书(主流和经典的书籍应该都有了)① 2000多本Python电子书(主流和经典的书籍应该都有了)下面的命令计算所有的C文件,CPP文件和H文件的文件大小总和。

2201_75604341的博客 817

还在用 RaiDrive/Rclone 挂载网盘?教您使用Windows 原生 WebDAV 丝滑直连 AList/Openlist,让你的网盘秒变本地硬盘!

网盘文件分散管理?😩 别再依赖第三方工具了!本文教你如何在 Windows 下,利用原生 WebDAV 功能,将 Openlist 网盘直接映射为本地硬盘!💻 操作简单,告别繁琐,让你的云端文件像本地文件一样丝滑!🚀 轻松实现高效管理,快来体验吧!

XiaoqiangClub的博客 2978

python 分割字符串 多个空格_Python 如何像 awk一样分割字符串?

若你使用过 Shell 中的 awk 工具,会发现用它来分割字符串是非常方便的。特别是多个连续空格会被当做一个处理。[root@localhost ~]# cat demo.txthello world[root@localhost ~]#[root@localhost ~]# awk '{print$1,$2}' demo.txthello world可是转换到 Python 上面来呢...

weixin_34688110的博客 572

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

awk处理带有空格的字符串_Python 如何像 awk一样分割字符串?

若你使用过 Shell 中的 awk 工具,会发现用它来分割字符串是非常方便的。特别是多个连续空格会被当做一个处理。[root@localhost ~]# cat demo.txthello world[root@localhost ~]#[root@localhost ~]# awk '{print$1,$2}' demo.txthello world可是转换到 Python 上面来呢...

weixin_39900736的博客 365

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python split 多个分隔符_Python 如何像 awk一样分割字符串?

若你使用过 Shell 中的 awk 工具,会发现用它来分割字符串是非常方便的。特别是多个连续空格会被当做一个处理。[root@localhost~]#catdemo.txthelloworld[root@localhost~]#[root@localhost~]#awk'{print$1,$2}'demo.txthelloworld可是转换到 Python...

weixin_39807896的博客 415

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

awk分割字符串

想从目标字符串中,提取想要的字符,可以用awk命令。 例如: 从<version>1.3.1-SNAPSHOT</version>中提取版本号,则可以用命令:awk -F'[<>]' '{print $3}' # echo "<version>1.3.1-SNAPSHOT</version>"|awk -F'[<&g...

ann49988的博客 555

python支持按指定字符串分割_Python下字符串指定多个分隔符分割

之前在文章Python数据类型之字符串中介绍了等分割字符串的方法,但是你会发现只能指定一个分隔符,那在Python下指定多个分隔符像AWK命令那样来分割字符串应该怎么做呢?对象的 方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。当你需要更加灵活的切割字符串的时候,那就需要借助方法了。函数非常实用,因为它允许你为字符串指定多个分隔符。 比如,在上面的例子中...

weixin_39912250的博客 2564

【linux命令讲解大全】052.Awk 字符串函数、一般函数和时间函数详解

本文详细介绍了 Awk 编程语言中的字符串函数、一般函数和时间函数。字符串函数涵盖了常用操作,如连接、截取、匹配和分割字符串等。一般函数包括计算字符串长度、执行系统命令、生成随机数等功能。时间函数提供了获取当前时间戳、转换时间格式以及创建自定义时间戳的功能。通过例子和详细说明,读者可以全面了解这些函数的使用方法。

全栈若城,专注知识分享 546

python awk 读文件_使用awk处理文本

在Liux下我们经常需要对一些文本文档做一些处理,尤其像从日志里提取一些数据,这是我们一般会用awk工具和sed工具去实现需求,这里对awk的入门使用简单记录。awk可以看作一种文本处理工具,一种专注数据操作的编程语言,一个数据处理引擎。其名字来源于三个发明者的姓名首字母。一般在Liux下使用的awk是gawk(gnu awk)。入门awk把文本文档看作是数据库,每一行看作一条数据库中的记录,可以...

weixin_39960116的博客 619

python语句分隔符_教程|Python下字符串指定多个分隔符分割的方法,实用

在Python下指定多个分隔符像AWK命令那样来分割字符串应该怎么做呢?string 对象的 split()方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。当你需要更加灵活的切割字符串的时候,那就需要借助re.split()方法了。函数re.split()非常实用,因为它允许你为字符串指定多个分隔符。 比如,在上面的例子中,分隔符可以是点,逗号,分号或者...

weixin_42627853的博客 2302

教程|Python下字符串指定多个分隔符分割的方法,实用

更多Python视频、源码、资料加群683380553免费获取 在Python下指定多个分隔符像AWK命令那样来分割字符串应该怎么做呢? string 对象的 split()方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。当你需要更加灵活的切割字符串的时候,那就需要借助re.split()方法了。 函数re.split()非常实...

python学习者的博客 7435

Pyp 替代sed,awk的文本处理工具

Linux上文本处理工具虽不少,像cut,tr,join,split,paste,sort,uniq,sed,awk这些经典工具让人眼花缭乱,而且都太老了,使用方法都不太人性化,尤其awk,语法简直反人类;所以perl,python,ruby等脚本语言相当热火,我倾向用python,但处理一些简单任务python写的还是比较麻烦,无法一行命令解决,直到我发现了它-Pyp! Pyp(Pyed pi...

weixin_33748818的博客 1221

python多分隔符分割字符串split()和re.split()

split()函数只能用单一分隔符来分割字符串 但是可以导入re包,re.split()可以则可以使用多分隔符进行划分 import re 多个分隔符之间用|分开 line = re.split('\t|\1', str) 如果字符串中有多个连续分隔符,可以用正则表达式的形式处理,*号表示闭包(0个或多个) line = re.split('[\t|\1]*', str) 这里必须说一下awk这个语言。处理文本真的是太方便了 如果用awk写的话可以直接这样使用 awk -F.

小白之比白更白的博客 1698

Shell中反转字符串的几种方法

文章目录1. 使用rev命令2. 使用sed 命令3. 使用perl 命令4.使用awk命令substr截取字符串length 字符串长度5. 利用python 1. 使用rev命令 在命令行反转字符串 [root@server1 myr]# echo "abcd" | rev dcba [root@server1 myr]# echo "abc" >file1 [root@server1 myr]# echo "qwe" >file2 [root@server1 myr]# rev file

wnccmyr的博客 2750

【shell】shell脚本实战-awk基本介绍,不断提升自己创造溢价的能力

我们之前学习过grep,sed,这两个工具的作用如下:grep和egrep:文本过滤的sed:流编辑器,实现编辑的今天我们要讨论的awk,是一个主要做文本输出的。

2301_79098886的博客 914
上一篇: 突发!Windows XP源代码泄露
下一篇: 10月1日之后,你新建的GitHub库默认分支不叫「master」了
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值