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的時候,返回第二個引數(可迭代物件)中非空的值,非常方便。
換用函式的寫法,可以這樣
>>> msg='hello----world'
>>> msg.split('-')
['hello','world']>>>
>>> filter(lambda item: True if item else False,'world']
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。