系统运维

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

时间:2010-12-5 17:23:32  作者:域名   来源:系统运维  查看:  评论:0
内容摘要:若你使用过 Shell 中的 awk 工具,会发现用它来分割字符串是非常方便的。特别是多个连续空格会被当做一个处理。[root@localhost~]#catdemo.txthelloworld[ro

若你使用过 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] 站群服务器
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap