首頁  >  文章  >  後端開發  >  Python針對任意多的分隔符號拆分字串(附程式碼)

Python針對任意多的分隔符號拆分字串(附程式碼)

不言
不言轉載
2018-11-27 15:50:153093瀏覽

這篇文章帶給大家的內容是關於Python針對任意多的分隔符拆分字符串(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

1、需求

我們需要將字串拆分為不同的字段,但是分隔符號(以及分隔符號之間的空格)在整個字串中並不一致。

2、解決方案

字串物件的split()方法只能處理非常簡單的情況,而且不支援多個分隔符,對分隔符號周圍存在的多種空格情況也無能為力。當需要一些更靈活地功能時,應該使用re.split()方法:

import re
line='abc def ; ghi, jkl,mno, pkr'
#分隔符:分号,都逗号,空格符,前后可以跟着任意数量的额外空格
result=re.split(r'\s*[;,\s]\s*',line)
print(result)

結果:

['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']

3、分析

## re.split()是很有用的,因為可以為分隔符號指定多個模式。例如,在上面的解決方案中,分隔符號:分號,都逗號,空格符,前後可以跟著任意數量的額外空格。同str.split()得到的結果一樣,最終得到的結果是欄位列表。

當使用re.split()時,需要小心正規表示式模式中的捕獲組是否包含在了括號裡。

如果用到了捕獲組,那麼匹配的文字也會包含在最終結果中。例如,看看下面的案例:

import re
line='abc def ; ghi, jkl,mno, pkr'
result=re.split(r'\s*(;|,|\s)\s*',line)
print(result)
結果:

['abc', ' ', 'def', ';', 'ghi', ',', 'jkl', ',', 'mno', ',', 'pkr']
在特定的上下文中取得到分隔符號也可能是有用的。例如,用分隔字符來改進字串的輸出:

import re
line='abc def ; ghi, jkl,mno, pkr'
result=re.split(r'\s*(;|,|\s)\s*',line)

values=result[::2]
delimiters=result[1::2]+['']

print(values)
print(delimiters)

last=''.join(v+d for v,d in zip(values,delimiters))
print(last)
結果:

['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']
[' ', ';', ',', ',', ',', '']
abc def;ghi,jkl,mno,pkr
如果不想在結果中看到分隔字符,但仍然想用符號來對正則表達式模式進行分組,請確保用的是非捕獲組,以(?:...)的形式指定。範例如下:

import re
line='abc def ; ghi, jkl,mno, pkr'
result=re.split(r'\s*(?:;|,|\s)\s*',line)

print(result)
結果:

['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']

以上是Python針對任意多的分隔符號拆分字串(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除