> > msg= 'hello world' >> > msg.split( ' ' )[ 'hello' , '' , '' , '' , 'world' ] 與我預(yù)想的結(jié)果不符,多個空格會被分割多次。 那有什么辦法可以達到 awk 一樣的效果呢? 有兩種方法。 第一種方法 不加參數(shù),這" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何像 awk一樣分割字符串

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-02 11:14 ? 次閱讀

若你使用過 Shell 中的 awk 工具,會發(fā)現(xiàn)用它來分割字符串是非常方便的。特別是多個連續(xù)空格會被當做一個處理。

[root@localhost ~]# cat demo.txt
hello      world
[root@localhost ~]#
[root@localhost ~]# awk '{print$1,$2}' demo.txt
hello world

可是轉(zhuǎn)換到 Python 上面來呢?結(jié)果可能是這樣的。

>> > msg='hello    world'
 >> > msg.split(' ')
['hello', '', '', '', 'world']

與我預(yù)想的結(jié)果不符,多個空格會被分割多次。

那有什么辦法可以達到 awk 一樣的效果呢?

有兩種方法。

第一種方法

不加參數(shù),這種只適用于將多個空格當成一個空格處理,如果不是以空格為分隔符的場景,這種就不適用了。

>> > msg='hello    world'
 >> > msg.split()
['hello', 'world']

第二種方法

使用 filter 來輔助,這種適用于所有的分隔符,下面以 - 為分隔符來舉例。

>> > msg='hello----world'
 >> > msg.split('-')
['hello', '', '', '', 'world']
> >>
 >> > filter(None, msg.split('-'))
['hello', 'world']

是不是很神奇,filter 印象中第一個參數(shù)接收的是 函數(shù),這里直接傳 None 居然有奇效。

查看了注釋,原來是這個函數(shù)會適配 None 的情況,當?shù)谝粋€參數(shù)是None的時候,返回第二個參數(shù)(可迭代對象)中非空的值,非常方便。

圖片

換用函數(shù)的寫法,可以這樣

>> > msg='hello----world'
 >> > msg.split('-')
['hello', '', '', '', 'world']
> >>
 >> > filter(lambda item: True if item else False, msg.split('-'))
['hello', 'world']
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1754

    瀏覽量

    32044
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    575

    瀏覽量

    20470
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    363

    瀏覽量

    23259
收藏 人收藏

    評論

    相關(guān)推薦

    如何在bash中分割字符串

    假設(shè)我們有個由逗號或者下劃線隔開的多個單詞組成的字符串,需要拆分這個字符串提取各個單詞。
    發(fā)表于 12-07 17:10 ?3659次閱讀

    串口讀取的字符串字符串輸入控件輸入的字符串的差別

    發(fā)現(xiàn)很多時候串口讀取的字符串字符串輸入控件輸入的字符串雖然看著一樣,但是要進行后續(xù)操作的話,卻總是不一樣的。大家有過這種感受吧,知道什么原
    發(fā)表于 06-06 11:44

    從串口讀取的字符串與輸入的字符串使用上效果不一樣??!

    請教各位大俠,用讀碼器從串口讀入的字符串在使用上和從字符串輸入窗輸入的字符串,看起來一樣,使用起來完全不同!為什么?怎么解決?
    發(fā)表于 09-23 14:46

    字符串字符串數(shù)組實現(xiàn)對漢字的分割

    輸入字符串,輸出字符串數(shù)組,實現(xiàn)對漢字的分割.
    發(fā)表于 12-23 14:09

    字符串的表示

    字符串的表示  隨著計算機在文字處理與信息管理中的廣泛應(yīng)用, 字符串已成為最常用的數(shù)據(jù)類型之, 許多計算機中都提供字符串操作功能, 些計
    發(fā)表于 10-13 17:11 ?3047次閱讀
    <b class='flag-5'>字符串</b>的表示

    新手必知的Python:分割字符串的步驟及源代碼

    若你使用過 Shell 中的 awk 工具,會發(fā)現(xiàn)用它來分割字符串是非常方便的。特別是多個連續(xù)空格會被當做個處理。
    的頭像 發(fā)表于 08-25 10:48 ?2153次閱讀
    新手必知的Python:<b class='flag-5'>分割</b><b class='flag-5'>字符串</b>的步驟及源代碼

    什么是復(fù)制字符串?Python如何復(fù)制字符串

    連續(xù)幾篇文章都在寫 Python 字符串,這出乎我的意料了。但是,有的問題,不寫不行,特別是那種靈機動想到的問題,最后你發(fā)現(xiàn),很多人根本不懂卻又誤以為自己懂了。那就繼續(xù)刨根問底,探究個明白吧
    發(fā)表于 11-25 10:32 ?2978次閱讀

    溫故而求知新:淺談Python的字符串

    字符串序列是種不可變序列,這意味著它不能可變序列一樣,進行就地修改。
    發(fā)表于 11-25 14:12 ?392次閱讀

    strtok拆分字符串

    大家好,我是驚覺,今天聊聊字符串字符串的使用場景非常之多,人機交互和雙機通信都會用到。比如:通過串口向單片機發(fā)送指令,以執(zhí)行操作或配置參數(shù)。單片機讀取傳感器數(shù)據(jù),數(shù)據(jù)格式是字符串。
    發(fā)表于 01-13 15:46 ?8次下載
    strtok拆分<b class='flag-5'>字符串</b>

    字符串操作

    labview字符串操作
    發(fā)表于 06-28 15:09 ?2次下載

    文詳解JavaScript字符串

    JavaScript字符串是原始值。此外,字符串是不可變的。這意味著如果你修改一個字符串,你總是會得到個新的字符串。原始
    的頭像 發(fā)表于 12-08 16:36 ?1151次閱讀

    字符串的相關(guān)知識

    TCL 中的數(shù)據(jù)類型只有種:字符串。這些字符串可以是字母、數(shù)字、布爾值、標點符號等特殊字符的組合。在某些特殊命令的作用下,字符串可以向其他
    的頭像 發(fā)表于 03-29 11:41 ?1070次閱讀

    代碼字符串分割方法

    我們寫代碼的時候,經(jīng)常會遇到這樣個場景,那就是分割字符串。比如說把一個字符串分成N個,或者說按照N個字符
    的頭像 發(fā)表于 09-25 11:42 ?763次閱讀

    oracle字符串split成多個

    Oracle是種廣泛使用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它提供了許多強大的功能和函數(shù),用于處理和操作數(shù)據(jù)。其中之就是字符串分割(split)方法,該方法用于將
    的頭像 發(fā)表于 12-06 09:54 ?5024次閱讀

    labview掃描字符串怎么用

    的函數(shù): 文本掃描器(Text Scan)函數(shù):這個函數(shù)可以從一個字符串中提取出特定的數(shù)據(jù),例如數(shù)字或者其他文本。你可以指定要提取的數(shù)據(jù)的格式,如整數(shù)、浮點數(shù)等。文本掃描器函數(shù)還可以跳過不需要的字符字符串
    的頭像 發(fā)表于 12-26 16:58 ?1786次閱讀