Python cookbook(字符串與文本)針對(duì)任意多的分隔符拆分字符串操作示例
本文實(shí)例講述了Python針對(duì)任意多的分隔符拆分字符串操作。分享給大家供大家參考,具體如下:
問(wèn)題:將分隔符(以及分隔符之間的空格)不一致的字符串拆分為不同的字段;
解決方案:使用更為靈活的re.split()方法,該方法可以為分隔符指定多個(gè)模式。
說(shuō)明:字符串對(duì)象的split()只能處理簡(jiǎn)單的情況,而且不支持多個(gè)分隔符,對(duì)分隔符周?chē)赡艽嬖诘目崭褚矡o(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á)式在線(xiàn)測(cè)試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線(xiàn)生成工具:
http://tools.jb51.net/regex/create_reg
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式
這篇文章主要介紹了Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式,組合模式即Composite?Pattern,將對(duì)象組合成成樹(shù)形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),組合模式使得用戶(hù)對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性,下文具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-02-02
16行Python代碼實(shí)現(xiàn)微信聊天機(jī)器人并自動(dòng)智能回復(fù)功能
聊天機(jī)器人自動(dòng)智能回復(fù)給我們的生活帶來(lái)了極大的便利,尤其在業(yè)務(wù)比較繁忙的時(shí)候,智能機(jī)器人給我們帶來(lái)極大的方便,今天小編教大家一招通過(guò)16行代碼實(shí)現(xiàn)微信聊天智能機(jī)器人,感興趣的朋友一起看看吧2022-01-01
Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令的實(shí)現(xiàn)
這篇文章主要介紹了Python使用paramiko連接遠(yuǎn)程服務(wù)器執(zhí)行Shell命令的實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
PyTorch快速搭建神經(jīng)網(wǎng)絡(luò)及其保存提取方法詳解
本篇文章主要介紹了PyTorch快速搭建神經(jīng)網(wǎng)絡(luò)及其保存提取方法詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python深度學(xué)習(xí)TensorFlow神經(jīng)網(wǎng)絡(luò)基礎(chǔ)概括
這篇文章主要為大家介紹了Python深度學(xué)習(xí)中TensorFlow神經(jīng)網(wǎng)絡(luò)基礎(chǔ)概括,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
Pycharm關(guān)于遠(yuǎn)程JupyterLab以及JupyterHub登錄問(wèn)題
這篇文章主要介紹了Pycharm關(guān)于遠(yuǎn)程JupyterLab以及JupyterHub登錄問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Python實(shí)現(xiàn)自動(dòng)發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)自動(dòng)發(fā)送郵件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
mAP計(jì)算目標(biāo)檢測(cè)精確度實(shí)現(xiàn)源碼
這篇文章主要為大家介紹了mAP計(jì)算目標(biāo)檢測(cè)精確度的實(shí)現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

