攝影或3C

Python 字串分割全攻略:splitlines() 與 re.split() 的用法與比較

在處理文字資料時,「分割字串」幾乎是最常見的需求之一。
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

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡