Python中拆分具有多個(gè)分隔符的字符串方法實(shí)例
要使用多個(gè)定界符拆分字符串:
使用 re.split()
方法,例如 re.split(r',|-', my_str)
。
re.split()
方法將拆分所有出現(xiàn)的分隔符之一的字符串。
import re # ??? 用 2 個(gè)分隔符拆分字符串 my_str = 'fql,jiyik-dot,com' my_list = re.split(r',|-', my_str) # ??? 以逗號(hào)或連字符分隔 print(my_list) # ??? ['fql', 'jiyik', 'dot', 'com']
re.split
方法接受一個(gè)模式和一個(gè)字符串,并在每次出現(xiàn)該模式時(shí)拆分字符串。
管道 | 字符是一個(gè)或。 匹配 A 或 B。
該示例使用 2 個(gè)分隔符(逗號(hào)和連字符)拆分字符串。
# ??? 用 3 個(gè)分隔符拆分字符串 my_str = 'fql,jiyik-dot:com' my_list = re.split(r',|-|:', my_str) # ??? comma, hyphen or colon print(my_list) # ??? ['fql', 'jiyik', 'dot', 'com']
下面是一個(gè)使用 3 個(gè)分隔符(逗號(hào)、連字符和冒號(hào))拆分字符串的示例。
我們可以使用盡可能多的 |
正則表達(dá)式中必要的字符。
使用方括號(hào) [] 根據(jù)多個(gè)定界符拆分字符串
或者,我們可以使用方括號(hào) []
來(lái)指示一組字符。
import re my_str = 'fql,jiyik-dot,com' my_list = re.split(r'[,-]', my_str) print(my_list) # ??? ['fql', 'jiyik', 'dot', 'com']
確保在方括號(hào)之間添加所有分隔符。
import re # ??? 用 3 個(gè)分隔符拆分字符串 my_str = 'fql,jiyik-dot:com' my_list = re.split(r'[,-:]', my_str) # 以逗號(hào)、連字符、冒號(hào)分割 print(my_list) # ??? ['fql', 'jiyik', 'dot', 'com']
如果字符串以其中一個(gè)定界符開(kāi)頭或結(jié)尾,我們可能會(huì)在輸出列表中得到空字符串值。
處理前導(dǎo)或尾隨定界符
我們可以使用列表理解從列表中刪除任何空字符串。
import re # ??? 用 3 個(gè)分隔符拆分字符串 my_str = ',fql,jiyik-dot:com:' my_list = [ item for item in re.split(r'[,-:]', my_str) if item ] print(my_list) # ??? ['fql', 'jiyik', 'dot', 'com']
列表推導(dǎo)負(fù)責(zé)從列表中刪除空字符串。
列表推導(dǎo)用于對(duì)每個(gè)元素執(zhí)行某些操作或選擇滿足條件的元素子集。
另一種方法是使用 str.replace()
方法。
使用 str.replace() 拆分具有多個(gè)定界符的字符串
要使用多個(gè)定界符拆分字符串:
- 使用
str.replace()
方法將第一個(gè)分隔符替換為第二個(gè)分隔符。 - 使用
str.split()
方法按第二個(gè)分隔符拆分字符串。
my_str = 'fql_jiyik!dot_com' my_list = my_str.replace('_', '!').split('!') print(my_list) # ??? ['fql', 'jiyik', 'dot', 'com']
這種方法僅在您想要拆分的分隔符很少時(shí)才方便,例如 2.
首先,我們用第二個(gè)分隔符替換每個(gè)出現(xiàn)的第一個(gè)分隔符,然后我們拆分第二個(gè)分隔符。
str.replace
方法返回字符串的副本,其中所有出現(xiàn)的子字符串都被提供的替換項(xiàng)替換。
該方法采用以下參數(shù):
- old 字符串中我們要替換的子串
- new 替換每次出現(xiàn)的 old
- count 僅替換第一個(gè) count 出現(xiàn)(可選)
請(qǐng)注意 ,該方法不會(huì)更改原始字符串。 字符串在 Python 中是不可變的。
這是另一個(gè)例子。
my_str = 'fql jiyik, dot # com. abc' my_list = my_str.replace( ',', '').replace( '#', '').replace('.', '').split() print(my_list) # ??? ['fql', 'jiyik', 'dot', 'com', 'abc']
我們使用 str.replace()
方法在拆分空白字符的字符串之前刪除標(biāo)點(diǎn)符號(hào)。
我們使用空字符串進(jìn)行替換,因?yàn)槲覀円獎(jiǎng)h除指定的字符。
我們可以根據(jù)需要將盡可能多的調(diào)用鏈接到 str.replace()
方法。
最后一步是使用 str.split()
方法將字符串拆分為單詞列表。
str.split()
方法使用定界符將字符串拆分為子字符串列表。
該方法采用以下 2 個(gè)參數(shù):
- separator 在每次出現(xiàn)分隔符時(shí)將字符串拆分為子字符串
- maxsplit 最多完成 maxsplit 拆分(可選)
當(dāng)沒(méi)有分隔符傳遞給 str.split()
方法時(shí),它會(huì)將輸入字符串拆分為一個(gè)或多個(gè)空白字符。
my_str = 'fql jiyik com' print(my_str.split()) # ??? ['fql', 'jiyik', 'com']
如果在字符串中找不到分隔符,則返回僅包含 1 個(gè)元素的列表。
使用可重用函數(shù)根據(jù)多個(gè)定界符拆分字符串
如果我們需要經(jīng)常根據(jù)多個(gè)分隔符拆分字符串,請(qǐng)定義一個(gè)可重用的函數(shù)。
import re def split_multiple(string, delimiters): pattern = '|'.join(map(re.escape, delimiters)) return re.split(pattern, string) my_str = 'fql,jiyik-dot:com' print(split_multiple(my_str, [',', '-', ':']))
split_multiple
函數(shù)接受一個(gè)字符串和一個(gè)分隔符列表,并根據(jù)分隔符拆分字符串。
str.join()
方法用于將分隔符與管道 |
連接起來(lái)。 分隔器。
# ??? ,|-|: print('|'.join([',', '-', ':']))
這將創(chuàng)建一個(gè)正則表達(dá)式模式,我們可以使用該模式根據(jù)指定的分隔符拆分字符串。
如果我們需要將一個(gè)字符串拆分為多個(gè)分隔符的單詞列表,我們還可以使用 re.findall()
方法。
使用 re.findall() 將字符串拆分為單詞列表
使用 re.findall()
方法將字符串拆分為具有多個(gè)分隔符的單詞列表。
re.findall()
方法將在每次出現(xiàn)單詞時(shí)拆分字符串,并返回包含單詞的列表。
import re # ? 將字符串拆分為具有多個(gè)分隔符的單詞列表 my_str = 'fql jiyik, dot # com. abc' my_list = re.findall(r'[\w]+', my_str) print(my_list) # ??? ['fql', 'jiyik', 'dot', 'com', 'abc']
re.findall
方法將一個(gè)模式和一個(gè)字符串作為參數(shù),并返回一個(gè)字符串列表,其中包含字符串中該模式的所有非重疊匹配項(xiàng)。
我們傳遞給 re.findall()
方法的第一個(gè)參數(shù)是一個(gè)正則表達(dá)式。
import re my_str = 'fql jiyik, dot # com. abc' my_list = re.findall(r'[\w]+', my_str) print(my_list) # ??? ['fql', 'jiyik', 'dot', 'com', 'abc']
方括號(hào) []
用于表示一組字符。
\w
字符與 Unicode 單詞字符匹配,并且包括可以作為任何語(yǔ)言的單詞一部分的大多數(shù)字符。
加號(hào) + 使正則表達(dá)式匹配前面字符(Unicode 字符)的 1 次或多次重復(fù)。
re.findall()
方法返回一個(gè)包含字符串中單詞的列表。
如果大家想了解關(guān)于正則表達(dá)式的知識(shí),可以參考 正則表達(dá)式教程。
該頁(yè)面包含所有特殊字符的列表以及許多有用的示例。
總結(jié)
到此這篇關(guān)于Python中拆分具有多個(gè)分隔符的字符串的文章就介紹到這了,更多相關(guān)Python拆分多分隔符的字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中scrapy處理項(xiàng)目數(shù)據(jù)的實(shí)例分析
在本篇文章里小編給大家整理了關(guān)于python中scrapy處理項(xiàng)目數(shù)據(jù)的實(shí)例分析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-11-11python用10行代碼實(shí)現(xiàn)對(duì)黃色圖片的檢測(cè)功能
這篇文章主要介紹了python用10行代碼實(shí)現(xiàn)對(duì)黃色圖片的檢測(cè)功能,涉及Python基于圖片庫(kù)PIL對(duì)圖片的檢測(cè)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08Python數(shù)據(jù)容器dict(字典)的實(shí)現(xiàn)
本文主要介紹了Python數(shù)據(jù)容器dict(字典)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python爬蟲(chóng)實(shí)戰(zhàn)之12306搶票開(kāi)源
今天小編就為大家分享一篇關(guān)于Python爬蟲(chóng)實(shí)戰(zhàn)之12306搶票開(kāi)源,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01Django框架靜態(tài)文件使用/中間件/禁用ip功能實(shí)例詳解
這篇文章主要介紹了Django框架靜態(tài)文件使用/中間件/禁用ip功能,結(jié)合實(shí)例形式詳細(xì)分析了Django框架靜態(tài)文件的使用、中間件的原理、操作方法以及禁用ip功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-07-07django haystack實(shí)現(xiàn)全文檢索的示例代碼
這篇文章主要介紹了django haystack實(shí)現(xiàn)全文檢索的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06為什么黑客都用python(123個(gè)黑客必備的Python工具)
python支持功能強(qiáng)大的黑客攻擊模塊,而且Python提供多種庫(kù),用于支持黑客攻擊,Python提供了ctypes庫(kù), 借助它, 黑客可以訪問(wèn)Windows、OS X、Linux等系統(tǒng)提供 DLL與共享庫(kù),還有Python語(yǔ)言易學(xué)易用,這對(duì)黑客攻擊而言是個(gè)巨大的優(yōu)勢(shì)。2020-01-01