Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition

加入好友
加入社群
Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

目標讀者
想徹底弄懂 split / rsplit / partition / rpartition
處理複雜標題、章節編號(例如文件 Heading:1.2.3 目的說明)
需要在「效能」「可控性」「語意清晰」之間做技術取捨
想建立一套可擴充的 parsing 策略

  1. 為什麼不只有一個 split?
    Python 給你多種切割方式,原因是情境不同:

從左取前綴 vs 從右取尾巴
是否需要保留分隔符資訊
是否只想切一次(避免多餘切割)
是否要處理“任意空白” vs “精確字元”

  1. 四大核心 API 心智圖
Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王
  1. split 與 rsplit 參數語義
    語法:str.split(sep=None, maxsplit=-1) / str.rsplit(sep=None, maxsplit=-1)

sep=None:啟用「空白語意」
連續空白視為一個分隔
忽略字串開頭與結尾的空白
分隔符不包含在結果中
sep=’ ‘(顯式):
不會忽略開頭/結尾空格
連續空格會產生空字串 token
範例:

"  A   B  C ".split()      # ['A', 'B', 'C']
"  A   B  C ".split(' ')   # ['', '', 'A', '', '', 'B', '', 'C', '']

4. split vs rsplit 直觀對比

s = "A B C D"
s.split(None, 1)   # ['A', 'B C D']
s.rsplit(None, 1)  # ['A B C', 'D']

輸出:

Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

方向差異只在決定“保留哪一側的大塊”。你想像字串被切一刀:

split(…,1):第一刀鎖定第一個分隔出現
rsplit(…,1):第一刀鎖定最後一個分隔出現

  1. partition / rpartition 何時更好?
    語法:str.partition(sep) → 永遠回 3 段 (left, sep, right)
    好處:

無需檢查長度
保留分隔符
精確匹配,無「空白語意」模式
例:

# %%
print("a=b=c".partition("="))    # ('a', '=', 'b=c')
print("a=b=c".rpartition("="))   # ('a=b', '=', 'c')
print("abc".partition("="))      # ('abc', '', '')

輸出:

Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

6. 常見任務與推薦寫法

Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

7. Edge Case 專區

Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

8. 效能 & 策略取捨

Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

9. Heading 編號解析:建議分層策略

目標:”1.2.3 系統目的” → 編號 = 1.2.3,標題 = 系統目的
也可能遇到:

有 tab:”2.4\t測試範圍”
無編號:”前言”
混合符號:”A-1-3 子件說明”,”(A)(1)(b) 功能”
推薦流程:

Tab 快速路:

Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

普通空白一次切:

Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

常見陷阱

Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

決策小抄(流程樹)

頻繁熱路徑 + 高性能 → 手動掃描 + 預編譯 regex fallback

只要第一段 / 後面全部?

從左:split(None,1)

從右:rsplit(None,1)

要保留分隔符?→ partition / rpartition

分隔字串必為單一 char 且只取一次?→ partition

混合格式或需回退?→ 分層:tab → 快速 split → 驗證 → regex

需要索引/保留空白 → 手動掃描

總結口訣

  • “左切用 split,右切用 rsplit”
  • “只切一次記得 maxsplit=1”
  • “要分隔符用 partition/rpartition”
  • “格式簡單不用 regex”
  • “Heading 解析分層:Tab→快速→驗證→Regex”
  • “性能敏感:手動掃描 + 預編譯 regex fallback”

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python 字串切割的終極實戰指南: split / rsplit / partition / rpartition - 儲蓄保險王

儲蓄保險王

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

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *