問題/需求:
需要將字符串切分,但是分隔符在整個字符串中並不一致
(即:需要用多個分隔符切分字符串)
str.split()方法不可行:
只支持單一分隔符,不支持正則及多個切割符號,不感知空格的數量
解決辦法:
re.split()
適用:多個 分隔符,切割功能非常強大
語法: re.split(pattern, string, maxsplit=0)
通過正則表達式將字符串分離。如果用括號將正則表達式括起來,那么匹配的字符串也會被列入到list中返回。maxsplit是分離的次數,maxsplit=1分離一次,默認為0,不限制次數。
例子:
>>> import re
>>> line = 'aa bb cc dd; ee ff. gg- hh ii kk'
>>> line
'aa bb cc dd; ee ff. gg- hh ii kk'
單字符切割:
>>> re.split(';',line)
['aa bb cc dd', ' ee ff. gg- hh ii kk']
兩個字符以上切割,放在 [ ] 中(不保留分隔符):
>>> re.split('[;.-]',line)
['aa bb cc dd', ' ee ff', ' gg', ' hh ii kk']
使用 ( ) 捕獲分組(保留分割符):
>>> re.split('([;,])',line)
['aa bb cc dd', ';', ' ee ff', '.', ' gg', '-', ' hh ii kk']
使用注意:
pattern中有問號時, 要加 \ 轉義,不然切分完全會不同。
