這篇文章給大家介紹Python中如何針對(duì)任意多的分隔符進(jìn)行拆分字符串,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
為元寶等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及元寶網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、元寶網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!我們需要將字符串拆分為不同的字段,但是分隔符(以及分隔符之間的空格)在整個(gè)字符串中并不一致。
字符串對(duì)象的split()方法只能處理非常簡(jiǎn)單的情況,而且不支持多個(gè)分隔符,對(duì)分隔符周圍存在的多種空格情況也無能為力。當(dāng)需要一些更為靈活地功能時(shí),應(yīng)該使用re.split()方法:
import re line='abc def ; ghi, jkl,mno, pkr' #分隔符:分號(hào),都逗號(hào),空格符,前后可以跟著任意數(shù)量的額外空格 result=re.split(r'\s*[;,\s]\s*',line) print(result)
結(jié)果:
['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr']
re.split()是很有用的,因?yàn)榭梢詾榉指舴付ǘ鄠€(gè)模式。例如,在上面的解決方案中,分隔符:分號(hào),都逗號(hào),空格符,前后可以跟著任意數(shù)量的額外空格。同str.split()得到的結(jié)果一樣,最終得到的結(jié)果是字段列表。
當(dāng)使用re.split()時(shí),需要小心正則表達(dá)式模式中的捕獲組是否包含在了括號(hào)里。
如果用到了捕獲組,那么匹配的文本也會(huì)包含在最終結(jié)果中。比如,看看下面的案例:
import re line='abc def ; ghi, jkl,mno, pkr' result=re.split(r'\s*(;|,|\s)\s*',line) print(result)
結(jié)果:
['abc', ' ', 'def', ';', 'ghi', ',', 'jkl', ',', 'mno', ',', 'pkr']
在特定的上下文中獲取到分隔符也可能是有用的。例如,用分隔字符來改進(jìn)字符串的輸出:
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)
結(jié)果:
['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr'] [' ', ';', ',', ',', ',', ''] abc def;ghi,jkl,mno,pkr
如果不想在結(jié)果中看到分隔字符,但仍然想用符號(hào)來對(duì)正則表達(dá)式模式進(jìn)行分組,請(qǐng)確保用的是非捕獲組,以(?:…)的形式指定。示例如下:
import re line='abc def ; ghi, jkl,mno, pkr' result=re.split(r'\s*(?:;|,|\s)\s*',line) print(result)
結(jié)果:
['abc', 'def', 'ghi', 'jkl', 'mno', 'pkr'
關(guān)于Python中如何針對(duì)任意多的分隔符進(jìn)行拆分字符串就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。