Python 中的 split() 方法詳解:新手指南

更新日期: 2024 年 9 月 20 日

在 Python 編程中,字串處理 是一項非常常見且重要的任務。

其中,split() 方法是將字串拆分為列表的強大工具。

對於剛開始學習 Python 的新手來說,理解並掌握 split() 方法的用法,將大大提升你在字串處理方面的能力。

本文將深入介紹 Python 中的 split() 方法,並提供豐富的示例,幫助你在實際開發中靈活運用。


split() 方法的基本概念

定義

split() 方法是 Python 字串(str)物件的一個內建方法,用於將字串按照指定的分隔符,拆分為列表

語法

  str.split(sep=None, maxsplit=-1)
  • sep(可選):指定用於拆分字串的分隔符。如果不指定,默認以任意空白字符(空格、制表符、換行符等)作為分隔符。
  • maxsplit(可選):指定拆分的次數。默認值為 -1,表示不限制拆分次數,即拆分所有匹配的分隔符。

split() 方法的詳細解析

sep 參數

  • 默認行為 當 sep=None(默認值)時,split() 會識別所有的空白字符,包括空格、制表符(\t)、換行符(\n)等。
  text = "Python\t是一門\n強大的編程語言"
  words = text.split()
  print(words)

輸出:

  ['Python', '是一門', '強大的編程語言']
  • 指定分隔符 你可以指定任意的字符串作為分隔符。
  data = "2023-10-05"
  parts = data.split('-')
  print(parts)

輸出:

  ['2023', '10', '05']
  • 注意事項
  • 如果指定的 sep 不存在於字串中,則返回包含原始字串的列表。
  text = "Hello World"
  result = text.split(',')
  print(result)

輸出:

  ['Hello World']

maxsplit 參數

  • 限制拆分次數 maxsplit 用於限制拆分的次數,剩餘的部分將作為列表的最後一個元素。
  text = "a,b,c,d,e"
  result = text.split(',', maxsplit=2)
  print(result)

輸出:

  ['a', 'b', 'c,d,e']
  • 無限拆分 當 maxsplit=-1 或未指定時,表示不限制拆分次數。

空字串的情況

  • 當字串為空時
  text = ""
  result = text.split()
  print(result)

輸出:

  []
  • 當分隔符為空字串時 如果指定的分隔符為空字串 '',會引發 ValueError
  text = "Python"
  result = text.split('')

錯誤訊息:

  ValueError: empty separator

實際應用場景

解析用戶輸入

user_input = input("請輸入多個數字,以逗號分隔:")
numbers = user_input.split(',')
numbers = [int(num) for num in numbers]
print(f"您輸入的數字總和為:{sum(numbers)}")

讀取檔案內容

假設有一個 CSV 檔案,每行的內容格式為 name,age,city。

line = "Alice,30,New York"
data = line.split(',')
name, age, city = data
print(f"姓名:{name},年齡:{age},城市:{city}")

3. 處理路徑或網址

url = "https://www.example.com/path/to/page"
parts = url.split('/')
print(parts)

輸出:

['https:', '', 'www.example.com', 'path', 'to', 'page']

與 join() 方法的結合使用

在將字串拆分為列表後,可能需要將列表重新組合為字串,這時可以使用 join() 方法。

text = "Python is fun"
words = text.split()
new_text = '-'.join(words)
print(new_text)

輸出:

Python-is-fun

split() 與正則表達式

對於更複雜的拆分需求,可以使用 re 模組的 split() 方法,支持正則表達式。

基本用法

import re

text = "one1two2three3four"
result = re.split('\d', text)
print(result)

輸出:

['one', 'two', 'three', 'four']

移除多個分隔符

import re

text = "apple;banana,orange|grape"
fruits = re.split('[;,\|]', text)
print(fruits)

輸出:

['apple', 'banana', 'orange', 'grape']

常見錯誤與注意事項

分隔符敏感度

split() 方法是大小寫敏感的,並且完全匹配指定的分隔符。

text = "HelloWorld"
result = text.split('world')
print(result)

輸出:

['HelloWorld']

連續的分隔符

當有連續的分隔符時,split() 會在每個分隔符處拆分。

data = "a,,b,,c"
result = data.split(',')
print(result)

輸出:

['a', '', 'b', '', 'c']

如果希望將多個連續的分隔符視為一個,可以考慮使用 re.split()。

import re

data = "a,,b,,,c"
result = re.split(',+', data)
print(result)

輸出:

['a', 'b', 'c']

總結

  • split() 方法 是處理字串的重要工具,能夠根據指定的分隔符將字串拆分為列表。
  • sep 參數 允許你指定分隔符,默認為空白字符。
  • maxsplit 參數 控制拆分的次數,默認為 -1(不限制)。
  • 與 join() 方法結合使用,可以在拆分和組合字串之間靈活切換。
  • re.split() 方法 提供了基於正則表達式的拆分能力,適用於更複雜的場景。

九、延伸閱讀

Similar Posts

發佈留言

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