怎麼處理Python分割字符串時有多個分隔符

在使用 Python 處理字符串的時候,有時候會需要分割字符。 分隔符比如下劃線 “_”,比如 “.”之類的。

一個分隔符 比如對於文件名 20191022_log.zip,我們想要獲取前面的日期。 如果日期格式固定,對於這樣的字符串我們當然可以使用索引進行切割。 當然也可以使用字符串的內建函數 split().  結果返回的是一個列表。 如果分隔符不在字符串之列,那麼返回的也是一個列表,不過元素隻有一個,那就是這個字符串自身:  多個分隔符 還是上面那個例子,如果字符串是 ‘log_20191022.zip’ 這個形式,想要獲取日期,有兩種方法, 一種方法是使用能夠 下劃線作為分隔符獲取結果的第一個元素,然後再使用 點 ‘.’作為分隔符再劃分一遍。 另一種方法就是直接使用 re.split() 。

因為 字符串的 split() 函數不能接受兩個分隔符作為參數。 re.split() 的使用方法如下:  以豎杠 | 作為分割分開兩個分隔符,如果有多個分隔符,則可以使用多個 | ,在上述例子中,因為點 . 是在正則裡有特殊的匹配含義,所以需要使用 \ 反斜杠對其進行轉義。

字符串方法str.split()幫助:

>>> help(str.split)
             
Help on method_descriptor:
 
split(self, /, sep=None, maxsplit=-1)
    Return a list of the words in the string, using sep as the delimiter string.
    
    sep
      The delimiter according which to split the string.
      None (the default value) means split according to any whitespace,
      and discard empty strings from the result.
    maxsplit
      Maximum number of splits to do.
      -1 (the default value) means no limit. 
>>> 

用法: string.split( sep = None, maxsplit = -1)
string 要操作字符串
sep 分隔符,默認值為whitespace空白符
maxsplit 最大分割次數,默認值為-1,表示無限制

如果同時有多個分隔符怎麼分割呢?
可以用循環多次分割來實現,例如:

>>> s = '6[5,12]3[2,6]1;35]67[8;9;11]12'
             
>>> for j in '[],;':
 t=[i.split(j) for i in t]
 t=[i for j in t for i in j]
 
>>> t         
['6', '5', '12', '3', '2', '6', '1', '35', '67', '8', '9', '11', '12']
>>> 

懂正則表達式的可以一步到位:

>>> import re
>>> s = '6[5,12]3[2,6]1;35]67[8;9;11]12'
>>> re.split('\[|\]|,|;',s)
['6', '5', '12', '3', '2', '6', '1', '35', '67', '8', '9', '11', '12']

到此這篇關於Python分割字符串時有多個分隔符怎麼處理的文章就介紹到這瞭,更多相關Python分割字符串時有多個分隔符怎麼處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: