【Python自學】字串索引!從零開始(雙關)學習Python的字串數列

Python 的字串索引是從 0 開始,而不是從 1 開始。這是很多初學者第一次接觸字串時最容易卡住的小地方。

📘 Python 中的字串索引,從零開始(雙關)!

在 Python 中,字串是由一連串「字元」組成的序列。每個字元都有自己的位置,這個位置就叫做索引。

只要知道字元的位置,就可以用索引把它取出來。這也是處理文字資料、Email、帳號、網址時很常用的基礎技巧。

🧭 基本概念

學字串索引時,可以先記住下面幾個重點。

  • 字串是序列:字串由一個一個字元組成,例如 "Python" 裡面有 P、y、t、h、o、n
  • 索引從 0 開始:第一個字元的位置是 0,不是 1
  • 可以使用正向索引:從左到右計算,第一個位置是 0
  • 可以使用反向索引:從右到左計算,最後一個位置是 -1
  • 也可以使用切片:一次取出一段範圍內的字元。
簡單記法:
正向索引從 0 開始,反向索引從 -1 開始。

🧪 Python 字串索引基本範例

先用一個簡單的字串 "Python" 來看索引怎麼使用。

word = "Python" print(word[0]) # 取第一個字元 print(word[1]) # 取第二個字元 print(word[-1]) # 取最後一個字元 print(word[-2]) # 取倒數第二個字元 print(word[0:3]) # 取索引 0 到 3 之前的字元

輸出結果

P y n o Pyt

其中 word[0:3] 代表從索引 0 開始取,一直取到索引 3 之前。

注意:word[0:3] 不包含索引 3 的字元。
所以結果是 Pyt,不是 Pyth

🧩 建立索引邏輯圖解

Python 這個字串為例,每個字元的位置如下。

字元 P y t h o n
正向索引 0 1 2 3 4 5
反向索引 -6 -5 -4 -3 -2 -1
反向索引的 -1 是最後一個字元,也就是 n,不是第一個字元 P

✂️ 字串切片:一次取出一段文字

除了取單一字元,也可以用切片一次取得某一段字串。

word = "Python" print(word[0:2]) print(word[2:6]) print(word[:3]) print(word[3:]) print(word[:])

輸出結果

Py thon Pyt hon Python

切片語法可以寫成:

字串[開始索引:結束索引]

其中「結束索引」不會被包含進去。

寫法 意思 結果
word[0:2] 從索引 0 取到索引 2 之前 Py
word[2:6] 從索引 2 取到索引 6 之前 thon
word[:3] 從開頭取到索引 3 之前 Pyt
word[3:] 從索引 3 取到最後 hon
word[:] 取出整個字串 Python

⚠️ 常見錯誤:IndexError

如果索引超出字串範圍,Python 就會出現 IndexError

word = "Hi" print(word[5]) # 超出範圍

因為 "Hi" 只有兩個字元:

字元 H i
正向索引 0 1
反向索引 -2 -1

所以 word[5] 找不到對應的字元。

錯誤訊息

IndexError: string index out of range
單一索引超出範圍會報錯,但切片超出範圍通常不會報錯。
例如 word[0:100] 會盡可能取到最後,而不是直接中斷程式。

📮 簡單字串索引範例:Email 程式索引

字串索引很適合用來整理有固定格式的文字,例如 Email。

一般 Email 通常可以拆成三個部分:

帳號 + @ + 網域名稱

例如:

yuanphx365@gmail.com

其中:

  • 帳號:yuanphx365
  • 分隔符號:@
  • 網域名稱:gmail.com

我們可以先找出 @ 的位置,再用切片把帳號和網域名稱分開。

完整程式碼

# 簡易郵件索引範例 mail = "yuanphx365@gmail.com" index = mail.index("@") # 找出 @ 的位置 print(index) # 印出 @ 的索引位置 print(mail[0:index]) # 印出帳號 print(mail[index + 1:]) # 印出網域名稱

程式執行結果

10 yuanphx365 gmail.com

這樣就成功把 Email 裡面的帳號和網域名稱分開了。

程式邏輯說明

這段程式的關鍵在於 mail.index("@")

index = mail.index("@")

它會找出 @ 在字串中的位置。以 yuanphx365@gmail.com 來說,@ 的位置是 10

接著用切片取出帳號:

mail[0:index]

這代表從索引 0 開始,取到 index 之前。因為切片不包含結束索引,所以不會把 @ 取進來。

再用下面這段取得網域名稱:

mail[index + 1:]

這代表從 @ 的下一個位置開始,一直取到字串最後。

簡單記法:
index 是 @ 的位置;index 前面是帳號,index 後面是網域。

🔎 index() 與 find() 的小補充

在 Python 中,index()find() 都可以用來尋找某個字元或字串的位置。

方法 找到時 找不到時
index() 回傳索引位置 產生錯誤
find() 回傳索引位置 回傳 -1

例如:

mail = "yuanphx365@gmail.com" print(mail.index("@")) print(mail.find("@"))

輸出結果

10 10

如果確定字串裡一定有指定字元,可以使用 index()。如果不確定有沒有,使用 find() 會比較安全。

✅ 小結

字串索引是 Python 處理文字資料的基礎。只要理解「位置」的概念,就能從字串中取出需要的字元或片段。

  • 字串是序列:每個字元都有自己的索引位置。
  • 正向索引:從左到右,從 0 開始。
  • 反向索引:從右到左,從 -1 開始。
  • 切片:使用 [開始:結束] 取出一段字串。
  • 切片不包含結束索引:word[0:3] 會取出索引 0、1、2
  • IndexError:單一索引超出範圍時會出現錯誤。
  • Email 拆解:可以用 index("@") 找出分隔位置,再用切片切出帳號與網域。
word = "Python" word[0] → P word[-1] → n word[0:3] → Pyt
最後用一句話記住:
Python 字串索引從 0 開始;切片取到結束索引之前。

📚 相關文章

留言

這個網誌中的熱門文章

麻將新手必看!不知道聽什麼牌怎麼辦?超多種實戰聽牌範例,教你怎麼判斷胡牌機會

麻將教學懶人包|從規則到牌理的完整觀念整理(附實戰心得)

【新訓入伍】義務役新兵必看!入伍報到必備清單整理|2026年更新