1. 程式人生 > 程式設計 >Python實現像awk一樣分割字串

Python實現像awk一樣分割字串

若你使用過 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,'world']

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。