從基礎(chǔ)到進(jìn)階詳解Python中字符串分割的常見(jiàn)方法
字符串分割是編程中常見(jiàn)的操作,無(wú)論是處理日志文件、解析CSV數(shù)據(jù),還是提取URL參數(shù),都需要用到字符串分割。Python提供了多種字符串分割方法,包括基礎(chǔ)的split()、rsplit()、partition(),以及更強(qiáng)大的正則表達(dá)式re.split()。本文將詳細(xì)介紹這些方法,并給出實(shí)際案例,幫助你掌握Python字符串分割的技巧。
1. 基礎(chǔ)字符串分割方法
1.1str.split()—— 最常用的分割方法
split() 是Python字符串最常用的分割方法,默認(rèn)按空格分割,也可以指定分隔符。
語(yǔ)法
str.split(sep=None, maxsplit=-1)
sep:分隔符,默認(rèn)為None(按空格分割)。maxsplit:最大分割次數(shù),默認(rèn)為-1(不限制)。
示例
s = "apple banana orange"
print(s.split()) # 默認(rèn)按空格分割
# 輸出: ['apple', 'banana', 'orange']
s = "apple,banana,orange"
print(s.split(',')) # 按逗號(hào)分割
# 輸出: ['apple', 'banana', 'orange']
s = "apple,banana,orange,grape"
print(s.split(',', maxsplit=2)) # 最多分割2次
# 輸出: ['apple', 'banana', 'orange,grape']
1.2str.rsplit()—— 從右向左分割
rsplit() 和 split() 類(lèi)似,但從右向左分割,適用于需要從字符串末尾開(kāi)始分割的情況。
示例
s = "apple,banana,orange,grape"
print(s.rsplit(',', maxsplit=1)) # 從右向左最多分割1次
# 輸出: ['apple,banana,orange', 'grape']
1.3str.partition()—— 分割成3部分
partition() 將字符串按第一個(gè)匹配的分隔符分割成3部分:
- 分隔符左邊的部分
- 分隔符本身
- 分隔符右邊的部分
語(yǔ)法
str.partition(sep)
sep:分隔符,必須指定。
示例
s = "apple,banana,orange"
left, sep, right = s.partition(',')
print(left, sep, right)
# 輸出: apple , banana,orange
str.rpartition()
rpartition() 和 partition() 類(lèi)似,但從右向左分割。
2. 高級(jí)字符串分割方法
2.1str.splitlines()—— 按行分割
splitlines() 按換行符(\n、\r、\r\n)分割字符串,適用于處理多行文本。
示例
s = "Hello\nWorld\nPython" print(s.splitlines()) # 輸出: ['Hello', 'World', 'Python']
2.2re.split()—— 正則表達(dá)式分割
re.split() 使用正則表達(dá)式進(jìn)行分割,適用于復(fù)雜分隔符(如多個(gè)不同字符)。
語(yǔ)法
import re re.split(pattern, string, maxsplit=0, flags=0)
pattern:正則表達(dá)式分隔符。maxsplit:最大分割次數(shù),默認(rèn)為0(不限制)。flags:正則標(biāo)志(如re.IGNORECASE)。
示例
(1) 按多個(gè)不同字符分割
import re s = "apple,banana;orange|grape" parts = re.split(r'[,;|]', s) # 按逗號(hào)、分號(hào)、豎線分割 print(parts) # 輸出: ['apple', 'banana', 'orange', 'grape']
(2) 按連續(xù)空格分割
s = "apple banana orange" parts = re.split(r'\s+', s) # 按1個(gè)或多個(gè)空格分割 print(parts) # 輸出: ['apple', 'banana', 'orange']
(3) 保留分隔符(使用捕獲組)
s = "appleDBbananaDBorange" parts = re.split(r'(DB)', s) # 使用捕獲組 (DB) 保留分隔符 print(parts) # 輸出: ['apple', 'DB', 'banana', 'DB', 'orange']
(4) 過(guò)濾掉分隔符
s = "appleDBbananaDBorange" parts = [part for part in re.split(r'(DB)', s) if part != 'DB'] # 過(guò)濾掉 DB print(parts) # 輸出: ['apple', 'banana', 'orange']
3. 實(shí)際應(yīng)用案例
案例1:解析CSV數(shù)據(jù)
import re
csv_data = "Name,Age,City\nAlice,25,New York\nBob,30,London"
lines = csv_data.splitlines() # 按行分割
for line in lines[1:]: # 跳過(guò)標(biāo)題行
fields = re.split(r',(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)', line) # 處理帶引號(hào)的CSV
print(fields)
# 輸出:
# ['Alice', '25', 'New York']
# ['Bob', '30', 'London']
案例2:提取URL參數(shù)
import re
url = "https://www.example.com/search?q=python&lang=en&page=1"
query = url.split('?')[1] # 提取查詢(xún)部分
params = re.split(r'&', query) # 按 & 分割參數(shù)
print(params)
# 輸出: ['q=python', 'lang=en', 'page=1']
案例3:分割日志文件
log = "2023-01-01 12:00:00 ERROR: File not found"
date, time, level, message = log.split(' ', maxsplit=3) # 最多分割3次
print(date, time, level, message)
# 輸出: 2023-01-01 12:00:00 ERROR: File not found
4. 總結(jié)
| 方法 | 適用場(chǎng)景 | 示例 |
|---|---|---|
str.split() | 簡(jiǎn)單分割(空格、逗號(hào)等) | "a,b,c".split(',') → ['a', 'b', 'c'] |
str.rsplit() | 從右向左分割 | "a,b,c".rsplit(',', 1) → ['a,b', 'c'] |
str.partition() | 分割成3部分 | "a,b,c".partition(',') → ('a', ',', 'b,c') |
str.splitlines() | 按行分割 | "a\nb\nc".splitlines() → ['a', 'b', 'c'] |
re.split() | 復(fù)雜分隔符(正則) | `re.split(r’[,; |
最佳實(shí)踐
- 簡(jiǎn)單分割用
split()或rsplit()。 - 需要保留分隔符用
partition()或re.split(r'(...)', ...)。 - 復(fù)雜分隔符(如多個(gè)不同字符)用
re.split()。 - 處理多行文本用
splitlines()。
掌握這些方法后,你可以輕松應(yīng)對(duì)各種字符串分割需求!
到此這篇關(guān)于從基礎(chǔ)到進(jìn)階詳解Python中字符串分割的常見(jiàn)方法的文章就介紹到這了,更多相關(guān)Python字符串分割內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)時(shí)監(jiān)控logstash日志代碼
這篇文章主要介紹了python實(shí)時(shí)監(jiān)控logstash日志代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
使paramiko庫(kù)執(zhí)行命令時(shí)在給定的時(shí)間強(qiáng)制退出功能的實(shí)現(xiàn)
這篇文章主要介紹了使paramiko庫(kù)執(zhí)行命令時(shí),在給定的時(shí)間強(qiáng)制退出,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
python實(shí)現(xiàn)21點(diǎn)小游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)21點(diǎn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
Flask使用SocketIO實(shí)現(xiàn)WebSocket與Vue進(jìn)行實(shí)時(shí)推送
本文主要介紹了Flask使用SocketIO實(shí)現(xiàn)WebSocket與Vue進(jìn)行實(shí)時(shí)推送,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
Python實(shí)現(xiàn)批量將word轉(zhuǎn)換成pdf
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量將word文檔轉(zhuǎn)換成pdf文件,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08
python通過(guò)安裝itchat包實(shí)現(xiàn)微信自動(dòng)回復(fù)收到的春節(jié)祝福
這篇文章主要介紹了python通過(guò)安裝itchat包實(shí)現(xiàn)微信自動(dòng)回復(fù)收到的春節(jié)祝福,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-01-01
Python中Jupyter notebook快捷鍵總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Python中Jupyter notebook快捷鍵總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-04-04

