Python re.split方法分割字符串的實(shí)現(xiàn)示例
re.split方法
注:使用前需要引入包(import re)
功能:split能夠按照所能匹配的字串將字符串進(jìn)行切分,返回切分后的字符串列表
形式:
re.split(pattern, string[, maxsplit=0, flags=0])
- pattern:匹配的字符串
- string:需要切分的字符串
- maxsplit:分隔次數(shù),默認(rèn)為0(即不限次數(shù))
- flags:標(biāo)志位,用于控制正則表達(dá)式的匹配方式,比如:是否區(qū)分大小寫
問(wèn)題
你需要將一個(gè)字符串分割為多個(gè)字段,但是分隔符(還有周圍的空格)并不是固定的。
解決方案
string 對(duì)象的 split() 方法只適應(yīng)于非常簡(jiǎn)單的字符串分割情形, 它并不允許有多個(gè)分隔符或者是分隔符周圍不確定的空格。 當(dāng)你需要更加靈活的切割字符串的時(shí)候,最好使用 re.split() 方法:
>>> line = 'asdf fjdk; afed, fjek,asdf, foo' >>> import re >>> re.split(r'[;,\s]\s*', line) ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
討論
函數(shù) re.split() 是非常實(shí)用的,因?yàn)樗试S你為分隔符指定多個(gè)正則模式。 比如,在上面的例子中,分隔符可以是逗號(hào),分號(hào)或者是空格,并且后面緊跟著任意個(gè)的空格。 只要這個(gè)模式被找到,那么匹配的分隔符兩邊的實(shí)體都會(huì)被當(dāng)成是結(jié)果中的元素返回。 返回結(jié)果為一個(gè)字段列表,這個(gè)跟 str.split() 返回值類型是一樣的。
當(dāng)你使用 re.split() 函數(shù)時(shí)候,需要特別注意的是正則表達(dá)式中是否包含一個(gè)括號(hào)捕獲分組。 如果使用了捕獲分組,那么被匹配的文本也將出現(xiàn)在結(jié)果列表中。比如,觀察一下這段代碼運(yùn)行后的結(jié)果:
>>> fields = re.split(r'(;|,|\s)\s*', line) >>> fields ['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo'] >>>
獲取分割字符在某些情況下也是有用的。 比如,你可能想保留分割字符串,用來(lái)在后面重新構(gòu)造一個(gè)新的輸出字符串:
>>> 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' >>>
如果你不想保留分割字符串到結(jié)果列表中去,但仍然需要使用到括號(hào)來(lái)分組正則表達(dá)式的話, 確保你的分組是非捕獲分組,形如 (?:...) 。比如:
>>> re.split(r'(?:,|;|\s)\s*', line) ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo'] >>>
到此這篇關(guān)于Python re.split方法分割字符串的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Python re.split分割字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python簡(jiǎn)單爬蟲(chóng)--get方式詳解
本篇文章介紹了python爬蟲(chóng)中g(shù)et和post方法介紹以及cookie作用,對(duì)此有興趣的朋友學(xué)習(xí)下,希望能夠給你帶來(lái)幫助2021-09-09
如何使用 Flask 做一個(gè)評(píng)論系統(tǒng)
這篇文章主要介紹了如何使用 Flask 做一個(gè)評(píng)論系統(tǒng),幫助大家更好的理解和使用flask框架進(jìn)行python web開(kāi)發(fā),感興趣的朋友可以了解下2020-11-11
matplotlib savefig 保存圖片大小的實(shí)例
今天小編就為大家分享一篇matplotlib savefig 保存圖片大小的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python數(shù)據(jù)分析之繪制m1-m2數(shù)據(jù)
這篇文章主要介紹了Python數(shù)據(jù)分析之繪制m1-m2數(shù)據(jù),文章基于python的相關(guān)資料展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
Python算法思想集結(jié)深入理解動(dòng)態(tài)規(guī)劃
這篇文章主要為大家介紹了Python算法思想集結(jié)深入理解動(dòng)態(tài)規(guī)劃詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Python+Opencv實(shí)現(xiàn)計(jì)算閉合區(qū)域面積
這篇文章主要介紹了利用Python?Opencv計(jì)算閉合區(qū)域的面積的原理以及實(shí)現(xiàn)代碼,文中的講解詳細(xì)易懂,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2022-03-03
Win10下安裝并使用tensorflow-gpu1.8.0+python3.6全過(guò)程分析(顯卡MX250+CUDA9.
這篇文章主要介紹了Win10下安裝并使用tensorflow-gpu1.8.0+python3.6全過(guò)程(顯卡MX250+CUDA9.0+cudnn),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
一文詳細(xì)介紹Python兩條斜杠 // 的作用和用法
Python中的兩條斜杠//是整數(shù)除法運(yùn)算符,返回商的整數(shù)部分,丟棄小數(shù)部分,它與取模運(yùn)算符%經(jīng)常一起使用,幫助理解除法的整數(shù)和余數(shù),與普通除法運(yùn)算符/不同,//總是返回整數(shù)結(jié)果,在處理負(fù)數(shù)時(shí),//會(huì)向絕對(duì)值更大的方向取整,本文就來(lái)介紹一下2024-11-11
Python將多個(gè)圖像合并輸出的實(shí)現(xiàn)方法
這篇文章主要介紹了Python將多個(gè)圖像合并輸出的實(shí)現(xiàn)方法,本文介紹了兩種將多個(gè)圖像合并為一個(gè)輸出的方法:使用PIL庫(kù)或使用OpenCV和NumPy,這些庫(kù)都可以使用Python中的簡(jiǎn)單語(yǔ)法和少量的代碼來(lái)完成此任務(wù),需要的朋友可以參考下2023-06-06

