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 通過引入的管道化表函式糾正了後一種情況 表函式是返回整個行的集 通常作為乙...