在處理文字資料時,「分割字串」幾乎是最常見的需求之一。
Python 提供了多種方法來達成這件事,其中最常用的有 splitlines()
以及 re.split()
。
這篇文章將帶你深入理解這兩個工具,並比較它們的適用場景。
1. splitlines()
:專門處理換行
功能
splitlines()
是字串方法,用來將一段文字依據「換行符號」分割成多行。
它會自動處理不同系統的換行符號:
\n
(Unix/Linux)\r\n
(Windows)\r
(舊 Mac)
範例:
s = "Hello\nWorld\r\nPython\rCode"
print(s.splitlines())
輸出:

特點
- 簡單好用
- 專門針對「換行」
- 不能自訂其他分隔符
2. re.split()
:正則表達式的萬用分割
功能
re.split(pattern, string)
是 re
模組提供的方法,可以用 正則表達式 (Regex) 來定義分隔符。
這讓它比 splitlines()
更靈活,不只可以處理換行,還能同時支援多種分隔符。
範例 1:模擬 splitlines()
import re
s = "Hello\nWorld\r\nPython\rCode"
print(re.split(r"\r\n|\r|\n", s))
輸出:
['Hello', 'World', 'Python', 'Code']
效果和 splitlines()
相同。
範例 2:多種分隔符
import re
s = "Apple,Orange|Banana;Grapes"
print(re.split(r"[|,;]", s))
輸出:

這裡使用 [|,;]
,代表「遇到 |
或 ,
或 ;
都切開」。
範例 3:多字元分隔符
如果分隔符是多字元(例如 --
或 \r\n
),就要用 |
方式:
s = "A--B\nC--D"
print(re.split(r"--|\n", s))
輸出:

3. 何時用 splitlines()
,何時用 re.split()
?
方法 | 適合場景 |
---|---|
splitlines() | 文字只需要依照「換行」分割,簡單直接 |
re.split() | 需要更強大的分割條件,例如:多種符號分隔 (|,;) |
4. 總結
splitlines()
→ 專門處理換行,簡單快速re.split()
→ 萬用分割工具,能處理多符號、多字元、複雜模式
如果只是處理純文字換行,用 splitlines()
就夠;
但如果要處理複雜格式(例如 CSV-like 格式、混合符號分隔),就該選 re.split()
。
✅ 建議:
- 簡單場景 → 用
splitlines()
- 複雜需求 → 用
re.split()
5. 常見錯誤 vs 正確寫法
在使用 re.split()
的時候,很多人會搞混 字元集合 []
和 模式選擇 |
,導致結果和預期不一樣。以下整理幾個常見情境:
需求:切換行符號(同時支援 \n, \r\n, \r)
常見錯誤 ❌ re.split(r"[\r\n]", text)
正確寫法 ✅ re.split(r"\r\n|\r|\n", text)
說明:[\r\n] 會把 \r\n 拆成兩個分隔符,需用 | 才能視為整體
--------------------------------------------------
需求:切多個單字元分隔符(例如 | , ;)
✅ 正確,但冗長 re.split(r"\||,|;", text)
✅ 正確,且更簡潔 re.split(r"[|,;]", text)
說明:單字元分隔符 → 用字元集合更簡潔
--------------------------------------------------
需求:切多字元分隔符(例如 -- , ###)
常見錯誤 ❌ re.split(r"[--]", text)
正確寫法 ✅ re.split(r"--|###", text)
說明:[] 只能處理單字元,多字元必須用 |
範例驗證
import re
text = "line1\r\nline2\nline3\rline4"
print("錯誤:", re.split(r"[\r\n]", text))
# ['line1', '', 'line2', 'line3', 'line4'] ← 多出空字串,因為 \r\n 被拆成兩個符號
print("正確:", re.split(r"\r\n|\r|\n", text))
# ['line1', 'line2', 'line3', 'line4']
輸出結果:

✅ 總結補充
- 單字元分隔符 → 用
[ ]
- 多字元分隔符 → 用
|
- 換行符號處理 →
splitlines()
最簡單,
但若要結合其他分隔條件,
就用re.split(r"\r\n|\r|\n|其他符號", text)
推薦hahow線上學習python: https://igrape.net/30afN
近期留言