2 1 多分隔符字串劃分

2021-08-14 09:32:27 字數 1649 閱讀 9505

str.split()

re.split()

str.split()方法適用於簡單的情形,對於多分隔符的情況需要使用re.split()

類似str.split()的操作

>>> line = 'asdf fjdk; afed, fjek,asdf, foo'

>>>

import re

>>> re.split(r'[;,\s]\s*', line)

['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

#另一種等價形式

>>> re.split(r'(?:,|;|\s)\s*', line)

['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

>>>

其中的字串r'[;,\s]\s*'r'(;|,|\s)\s*'是正規表示式。

元字元描述

[xyz]

字元集合。匹配所包含的任意乙個字元。例如,「[abc]」可以匹配「plain」中的「a」。

\s匹配任何不可見字元,包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。

(pattern)

匹配pattern並獲取這一匹配。所獲取的匹配可以從產生的matches集合得到,在vbscript中使用submatches集合,在jscript中則使用0…

9屬性。要匹配圓括號字元,請使用「(」或「)」。

(?:pattern)

非獲取匹配,匹配pattern但不獲取匹配結果,不進行儲存供以後使用。這在使用或字元「(|)」來組合乙個模式的各個部分時很有用。例如「industr(?:y|ies)」就是乙個比「industry|industries」更簡略的表示式。

保留分隔符

>>> fields = re.split(r'(;|,|\s)\s*', line)

>>> fields

['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo']

>>>

獲取其中分隔符

>>> values = fields[::2]

>>> delimiters = fields[1::2] + ['']

>>> values

['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

>>> delimiters

[' ', ';', ',', ',', ',', '']

>>>

# reform the line using the same delimiters

>>>

''.join(v+d for v,d in zip(values, delimiters))

'asdf fjdk;afed,fjek,asdf,foo'

>>>

go多分隔符切割字串

若急於解決問題,可直接使用 go get t github.com jialanli lacia utils 該庫類似常用功能一應俱全哦.該功能可使用預設字元來進行多個分割,也可自定義字元集合進行分割 lacia.splitbymanystrwith p1,p2 引數1為指定字串 引數2為自定義的要...

awk linux 分隔 awk多分隔符

awk的 f引數可以指定新的分隔符,有些時候可能需求指定多個分隔符,比如下面的內容 root n1 netstat an grep estab udp 0 0 192.168.1.120 35570 212.47.249.141 123 established udp 0 0 192.168.1.1...

Oracle 根據分隔符分隔字串

為了讓pl sql 函式返回資料的多個行 必須通過返回乙個 ref cursor 或乙個資料集合來完成 ref cursor 的這種情況侷限於可以從查詢中選擇的資料 而整個集合在可以返回前 必須進行具體化 oracle 9i 通過引入的管道化表函式糾正了後一種情況 表函式是返回整個行的集 通常作為乙...