甲居工作室

3.Python 字串(string)

日期:2024/04/05

3.Python 字串(string)

在 Python 中有東西都是物件 (object),
字串是由一個文字 (字元)一個文字串 (字元)接起來,將想要使用的文字內容放在兩個單引號''或兩個雙引號""裡。例如:

  1. myString = 'Hello, World!'

本章會開始介紹字串相關的方法(method)、函式(function)與操作

3.1 輸入輸出

  1. name = input('請輸入名字:')
  2. print(name)
  • name = input('請輸入名字:'):此行程式碼使用 input() 函式提示用戶輸入名字,並將輸入的名字賦值給變數 name。
  • print(name):此行程式碼使用 print() 函式將變數 name 的值打印出來,顯示在螢幕上。

要注意下面兩個,輸出直接print()看起來是一樣的,實質上兩者資料形態不同,初學者請小心注意。

  1. >>> type(13)
  2. <class 'int'>
  3. >>> type('13')
  4. <class 'str'>

3.2 字串操作

於 3.1 的範例中我們直接顯示輸入之內容,我們來將其簡化方便測試,我們將 name 直接賦值。

字串組合

  1. name = 'Yuan'
  2. print('歡迎' + name + '回臺')
  3. # 歡迎Yuan回臺

使用+ 號可以使「變數」與「字串」進行組合,同型態才能相加喔。

字串重複

  1. name = 'Yuan'
  2. showWord = '歡迎' + name + '回臺'
  3. print(showWord * 3)
  4. # 歡迎Yuan回臺歡迎Yuan回臺歡迎Yuan回臺

使用* 號可以使內容重複,當然我們也可以使字串直接重複。

  1. w = 'w' * 5
  2. print(w)
  3. # wwwww

字串格式化

  • 古老的格式化方式 (% Operator),因作者討厭所以就不教了(X(沒啦,我還是略提一下。透過%運算子來進行字串格式化,如 (%s字串)、%d (十進位整數)、 %f (浮點數)。
    1. name = '王先生'
    2. total = 180
    3. message = '您好: %s ,今日一共消費 %d 元。' % (name, total)
    4. print(message)
    5. # 您好: 王先生 ,今日一共消費 180 元。
  • 使用 .format() 方法格式化字串。
    1. name = '王先生'
    2. total = 180
    3. message = '您好: {} ,今日一共消費 {} 元。'.format(name, total)
    4. print(message)
    5. # 您好: 王先生 ,今日一共消費 180 元。
  • 使用 f-strings 格式化字串(Python 3.6+)
    1. name = '王先生'
    2. total = 180
    3. message = f'您好: {name} ,今日一共消費 {total} 元。'
    4. print(message)
    5. # 您好: 王先生 ,今日一共消費 180 元。

看完三種方式後另外提及一下有趣的應用方式

  1. name = '王先生'
  2. total = 1234
  3. message = f'您好: {name} ,今日一共消費 {total:,} 元。'
  4. print(message)
  5. # 您好: 王先生 ,今日一共消費 1,234 元。

沒錯多了:,,我們可以使用:來指定格式化的方式冒號後面可以跟隨格式化指示符,如:.2f,當然格式化的應用方式不止上述這邊僅列出一些,歡迎探索。

字元與字串

我們來聊聊 Python 獨特的地方,因字串為一個個字元組成我們可以依照他的編號也就是索引值 (index) 來尋找或是其他操作。
甚至是跑迴圈!這算是 Python 獨特之處 www

  1. word = 'interesting'

字串可以透過正索引和負索引存取其字元。
而第0個元素是字串的第一個字符,而第-1個元素是字串的最後一個字符。

interesting
012345678910
-11-10-9-8-7-6-5-4-3-2-1

單一字元

好的我們來開始,使用[ ] 可以取得某個字元。

  1. print(word[0]) # i
  2. print(word[5]) # e
  3. print(word[-3]) # i

字串內容是不可改變的只能重新賦值

  • 錯誤操作
    1. word = 'interesting'
    2. word[0] = 'I'
    3. print(word)
    4. # TypeError: 'str' object does not support item assignment
  • 解決方法
    1. word = 'interesting'
    2. word = 'I' + word[1:]
    3. print(word)
    4. # Interesting

字串切片 (slice)

切片的方式為使用[ ]其中包含三個參數

  • 開始: start
  • 結束: end
  • 步長: step 預設值為1
    用法為object[start:end:step],常見的規則如下:
定義說明
[ : ]全部字元
[ start: ]start 的位置一直到結束的字元
[ :end ]從開始一直到 end 的前一個字元
[ start:end ]start 位置到 end 的前一個字元
[start:end:step]範圍 startend 的前一個字元,每次移動 step 步後取得下個字元
  1. print(word[:]) # interesting
  2. print(word[5:]) # esting
  3. print(word[:6]) # intere
  4. print(word[2:5]) # ter
  5. print(word[-4:-1]) # tin
  6. print(word[2:9:3]) # tei

[start:end:step] 詳細說明,以[2:9:3]為範例:

思考步驟一: 2:9: 表示 index 2 到 index 8。

teresti
2345678

思考步驟二: :3: 相隔 3 步,2 + 3 = 5; 5 + 3 = 8。

tei
258

字串相關函式

函式說明
len(str)返回字串的長度
  1. >>> len('interesting')
  2. 11

字串相關方法

方法說明
str.upper()返回字串的大寫版本
str.lower()返回字串的小寫版本
str.strip()返回刪除首尾空格的字串
str.replace(old, new)返回替換後的字串
str.split(delimiter)返回使用分隔符拆分的字串列表
str.startswith(prefix)返回字串是否以指定前綴開始
str.endswith(suffix)返回字串是否以指定後綴結束
str.find(sub)返回子字串在主字串中第一次出現的位置,若不存在返回 -1
str.rfind(sub)返回子字串在主字串中最後一次出現的位置,若不存在返回 -1
str.index(sub)返回子字串在主字串中第一次出現的位置,若不存在引發 ValueError
str.count(sub)返回子字串在主字串中出現的次數
str.isalpha()返回字串是否全部為字母
str.isdigit()返回字串是否全部為數字
str.isalnum()返回字串是否全部為字母或數字
str.islower()返回字串是否全部為小寫字母
str.isupper()返回字串是否全部為大寫字母

3.3 回家作業

請幫我撰寫一支程式,詢問用戶今天的西元日期並顯示民國日期。

  • 輸入: 20240405
  • 輸出: 民國 113 年 4月 5 日

延伸閱讀

4.Python 串列(list)

串列是一串 Python 的資料,將想要使用的資料內容放在兩個方括號[],各個資料可以有不同的資料型態。

Read more

5.Python 字典(Dictionary)

Python 字典是一種無序、可變 (Mutable)的容器,用於儲存鍵(key)-值(value)對。字典由一對大括號 {} 構成,其中每個鍵與值對之間用冒號 : 分隔,鍵和值之間用逗號 , 分隔。

Read more