Python cookbook(字符串與文本)針對(duì)任意多的分隔符拆分字符串操作示例
本文實(shí)例講述了Python針對(duì)任意多的分隔符拆分字符串操作。分享給大家供大家參考,具體如下:
問(wèn)題:將分隔符(以及分隔符之間的空格)不一致的字符串拆分為不同的字段;
解決方案:使用更為靈活的re.split()方法,該方法可以為分隔符指定多個(gè)模式。
說(shuō)明:字符串對(duì)象的split()只能處理簡(jiǎn)單的情況,而且不支持多個(gè)分隔符,對(duì)分隔符周圍可能存在的空格也無(wú)能為力。
# example.py # # Example of splitting a string on multiple delimiters using a regex import re #導(dǎo)入正則表達(dá)式模塊 line = 'asdf fjdk; afed, fjek,asdf, foo' # (a) Splitting on space, comma, and semicolon parts = re.split(r'[;,\s]\s*', line) print(parts) # (b) 正則表達(dá)式模式中使用“捕獲組”,需注意捕獲組是否包含在括號(hào)中,使用捕獲組導(dǎo)致匹配的文本也包含在最終結(jié)果中 fields = re.split(r'(;|,|\s)\s*', line) print(fields) # (c) 根據(jù)上文的分隔字符改進(jìn)字符串的輸出 values = fields[::2] delimiters = fields[1::2] delimiters.append('') print('value =', values) print('delimiters =', delimiters) newline = ''.join(v+d for v,d in zip(values, delimiters)) print('newline =', newline) # (d) 使用非捕獲組(?:...)的形式實(shí)現(xiàn)用括號(hào)對(duì)正則表達(dá)式模式分組,且不輸出分隔符 parts = re.split(r'(?:,|;|\s)\s*', line) print(parts)
>>> ================================ RESTART ================================ >>> ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo'] ['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo'] value = ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo'] delimiters = [' ', ';', ',', ',', ',', ''] newline = asdf fjdk;afed,fjek,asdf,foo ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo'] >>>
(代碼摘自《Python Cookbook》)
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線測(cè)試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python通過(guò)PyQt5實(shí)現(xiàn)登錄界面的示例代碼
本文主要介紹了python通過(guò)PyQt5實(shí)現(xiàn)登錄界面的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Python編程中*args與**kwargs區(qū)別作用詳解
這篇文章主要介紹了Python編程中*args與**kwargs區(qū)別作用詳解2021-10-10Django商城項(xiàng)目注冊(cè)功能的實(shí)現(xiàn)
注冊(cè)功能是網(wǎng)頁(yè)項(xiàng)目必備的需求,本文提供了一個(gè)Django項(xiàng)目實(shí)現(xiàn)注冊(cè)功能的示例,有此需求的同學(xué)可以參考下2021-06-06python微信公眾號(hào)開(kāi)發(fā)簡(jiǎn)單流程
這篇文章主要介紹了python微信公眾號(hào)開(kāi)發(fā)的相關(guān)資料,分步驟為大家分享python微信公眾號(hào)開(kāi)發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Python列表list數(shù)組array用法實(shí)例解析
這篇文章主要介紹了Python列表list數(shù)組array用法,實(shí)例解析了關(guān)于數(shù)組的各種常見(jiàn)操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10Python3中_(下劃線)和__(雙下劃線)的用途和區(qū)別
經(jīng)常會(huì)看到以下劃線或者雙下劃線開(kāi)頭的方法或者屬性,到底它們有什么作用,又有什么樣的區(qū)別呢?今天我們來(lái)總結(jié)一下,感興趣的小伙伴們可以參考一下2019-04-04