Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? “3.1.2  Test Strategy”.split(maxsplit=1) #注意中間無底線: 非max_split

加入好友
加入社群
Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? "3.1.2  Test Strategy".split(maxsplit=1) #注意中間無底線: 非max_split - 儲蓄保險王

s.split(maxsplit=1) =
把字串按照(任意連續空白)切成「兩塊」,
左邊第一個詞、右邊剩下全部。

1.1 基本語法

str.split(sep=None, maxsplit=-1)

參數解釋:

  • sep=None:預設。把所有「連續空白字元」(空格、tab、換行、全形空白等)視為一個分隔。
  • sep=",":指定分隔符,僅精確匹配該字串。
  • maxsplit:最多切幾次;切完後會得到「maxsplit + 1」個元素。-1 或省略 = 無限制。

1.2 最常用場景:只想切成兩半

line = "3.1.2    Test Strategy Overview"
num, title = line.split(maxsplit=1)
# ['3.1.2', 'Test Strategy Overview']

好處:

  • 自動把一堆空格 / tab 合併成一個分隔。
  • 不用自己數空白。

1.3 與指定分隔符的差異

s = "3.1.2    Test Strategy"
print(s.split(maxsplit=1))     # ['3.1.2', 'Test Strategy']
print(s.split(" ", 1))         # ['3.1.2', '   Test Strategy']   -> 多餘空白還在右邊

當你「不在意空白長度」→ 用 maxsplit(不給 sep)。
當你「想保留原始空白」→ 指定 sep=” “,再手動處理。

1.4 常見錯誤

Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? "3.1.2  Test Strategy".split(maxsplit=1) #注意中間無底線: 非max_split - 儲蓄保險王

1.5 典型使用情境

Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? "3.1.2  Test Strategy".split(maxsplit=1) #注意中間無底線: 非max_split - 儲蓄保險王

1.6 和其它方法比較

Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? "3.1.2  Test Strategy".split(maxsplit=1) #注意中間無底線: 非max_split - 儲蓄保險王

1.7 行為細節你可能會忽略

  1. split()(不給 sep)會自動:
    • 連續的任意空白(空格、tab、換行…)被視為一個分隔符。
    • 兩端的空白不會產生空字串 token,因此結果看起來像“去掉了頭尾空白”。
    • 原字串本身沒有被修改;只是結果列表裡不包含代表頭尾空白的元素。
    • 如果整個字串都是空白 → 回傳空列表 [],而不是 [""]
  2. 但是 split(” “)(明確給一格空白):
    • 不會自動去頭尾
    • 多個空白會產生空字串
    • " a b ".split(" ") → ['', '', 'a', '', 'b', '', '']
  3. maxsplit=0 等於不切(結果就是原字串包成 list)。

1.8 快速測試(可貼進互動環境)

samples = [
    "3.1.2    Test Strategy",
    "3.1.2 Test Strategy",
    "3.1.2",
    "   7    Functional   Plan   ",
    "",
    "  "
]

for s in samples:
    print(repr(s), "=>", s.split(maxsplit=1))

輸出:

Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? "3.1.2  Test Strategy".split(maxsplit=1) #注意中間無底線: 非max_split - 儲蓄保險王

輸出重點:

“3.1.2” → [‘3.1.2’](只有一段)
” ” → [](因為全是空白)

1.9 什麼時候不適合只用 split(maxsplit=1)

Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? "3.1.2  Test Strategy".split(maxsplit=1) #注意中間無底線: 非max_split - 儲蓄保險王

1.10 實務建議範例(含驗證)

# %%
def split_heading_fast(line: str):
    line = line.strip()
    parts = line.split(maxsplit=1)
    if not parts:
        return None, "", "empty"
    if len(parts) == 1:
        return None, line, "no_space"

    num, title = parts
    if (num
        and num[0] != '.'
        and not num.endswith('.')
        and '..' not in num
        and all(ch.isdigit() or ch == '.' for ch in num)):
        return num, title.strip(), "fast"
    return None, line, "invalid_num"

print(split_heading_fast("3.1.2    Test Strategy"))
# ('3.1.2', 'Test Strategy', 'fast')

輸出:

Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? "3.1.2  Test Strategy".split(maxsplit=1) #注意中間無底線: 非max_split - 儲蓄保險王

1.11 快速記憶小抄(Cheat Sheet)

Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? "3.1.2  Test Strategy".split(maxsplit=1) #注意中間無底線: 非max_split - 儲蓄保險王

1.12 最後總結

  • maxsplit = 限制“切幾次”;最常用值是 1。
  • 不給 sep → 把所有連續空白視為一個分隔;給了 sep → 精準匹配,不自動壓縮。
  • 用 split(maxsplit=1) 解析「編號 + 標題」超好用,但記得必要時加合法性驗證。

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

加入好友
加入社群
Python str.split() 的 maxsplit 速懂教學(含常見陷阱與實用對比);如何分割標題號 與 標題文字? "3.1.2  Test Strategy".split(maxsplit=1) #注意中間無底線: 非max_split - 儲蓄保險王

儲蓄保險王

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

You may also like...

發佈留言

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