iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Software Development

跟著 OXXO 一起學 Python系列 第 14

( Day 8.1) Python 文字與字串 ( 常用方法 )

  • 分享至 

  • xImage
  •  

在「文字與字串」文章中已經認識了字串 String 的基本用法,這篇教學會整理出文字與字串相關的語法。

原文參考:文字與字串 ( 常用方法 )

本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )

常用操作方法 {a00}

下面整理了文字與字串常用的操作方法 ( 參考:字符串的方法 )

方法 說明
str(x) 轉換與建立字串
+ 結合字串
重複字串
str[] 取出字元
len(str) 取得字串長度
str.split(x) 根據 x 拆分字串
str.join(iter) 將序列結合成字串
str.replace(x, y, n) 將字串中的 x 替換為 y,n 為要替換的數量,可不填 ( 表示全部替換 )
str.strip() 去除字串開頭或結尾的某些字元
str.capitalize() 將字串字首變成大寫
str.casefold()、str.lower() 將字串全部轉成小寫
str.upper() 將字串全部轉成大寫
str.title() 將字串全部轉成標題 ( 每個單字字首大寫 )
str.swapcase() 將字串的大小寫對調
str.count(sub, start, end) 計算某段文字在字串中出現的次數 ( start、end 為範圍,可不填 )
str.index(sub, start, end) 尋找某段文字在字串中出現的位置 ( start、end 為範圍,可不填 )
str.format 格式化字串,參考「.format
str.encode(encoding='utf-8', errors='strict') 字串編碼

常用判斷方法

下面整理了文字與字串常用的判斷方法,這些方法使用後會回傳 True 和 False。

方法 說明
sub in str 判斷字串中是否出存在某段文字,回傳 True 或 False
str.isalnum() 判斷字串中是否都是英文字母或數字 ( 不能包含空白或符號 ),回傳 True 或 False
str.isalpha() 判斷字串中是否都是英文字母 ( 不能包含數字、空白或符號 ),回傳 True 或 False
str.isdigit() 判斷字串中是否都是數字 ( 不能包含英文、空白或符號 ),回傳 True 或 False
str.islower() 判斷字串中是否都是小寫英文字母,回傳 True 或 False
str.isupper() 判斷字串中是否都是大寫英文字母,回傳 True 或 False
str.istitle() 判斷字串中是否為標題 ( 每個單字字首大寫 ),回傳 True 或 False

str(x)

使用「str(x)」可以將 x 轉換成字串的型態。

a = str(123)
print(a)   # 123 ( 字串型態,不是數字 )

+ 結合字串

使用「」可以將不同的字串結合在一起。

a = 'abc'
b = '123'
print(a + b)   # abc123

* 重複字串

使用「」可以將同一個字串重複指定的次數。

a = 'abc'
print(a*3)

str[]

使用「str[]」可以取出字串中的某些字元 ( 更多可參考:取得字元與字串 )。

a = '0123456789abcdef'
print(a[0])       # 0 ( 第一個字元 )
print(a[3])       # 3 ( 第四個字元 )
print(a[-1])      # f ( 最後一個字元 )
print(a[:])       # 0123456789abcdef ( 取出全部字元 )
print(a[5:])      # 56789abcdef ( 從 5 開始到結束 )
print(a[:5])      # 01234 ( 從 0 開始到第 4 個 ( 5-1 ) )
print(a[5:10])    # 56789 ( 從 5 開始到第 9 個 ( 10-1 ) )
print(a[5:-3])    # 56789abc ( 從 5 開始到倒數第 4 個 ( -3-1 ) )
print(a[5:10:2])  # 579 ( 從 5 開始到第 9 個,中間略過 2 個 )

len(str)

使用「len(str)」可以取得字串長度 ( 有幾個字元 )。

a = 'hello world'
print(len(a))    # 11

str.split(x)

使用「str.split(x)」可以根據 x 字元拆分字串,使字串變成串列形式。

a = 'hello world, I am oxxo, how are you?'
b = a.split(',') # 以逗號「,」進行拆分
c = a.split(' ') # 以空白字元「 」進行拆分
d = a.split()    # 如果不指定分隔符號,自動以空白字元進行拆分
print(b)         # ['hello world', ' I am oxxo', ' how are you?']
print(c)         # ['hello', 'world,', 'I', 'am', 'oxxo,', 'how', 'are', 'you?']
print(d)         # ['hello', 'world,', 'I', 'am', 'oxxo,', 'how', 'are', 'you?']

str.join(iter)

使用「str.join(iter)」可以將原本的字串,結合指定的序列,變成新的字串。

a = ['hello world', 'I am oxxo', 'how are you?']
b = ', '.join(a)  # 使用逗號「,」進行結合
print(b)  # hello world, I am oxxo, how are you?

str.replace(x, y, n)

使用「str.replace(x, y, n)」可以將字串中的 x 替換為 y,n 為要替換的數量,可不填 ( 表示全部替換 )

a = 'hello world, lol'
b = a.replace('l','XXX')
c = a.replace('l','XXX',2)
print(b)  # heXXXXXXo worXXXd, XXXoXXX ( 所有的 l 都被換成 XXX )
print(c)  # heXXXXXXo world, lol ( 前兩個 l 被換成 XXX )

str.strip()

使用「str.strip()」可以去除字串開頭或結尾的某些字元。

a = '  hello!!'
b = a.strip()
c = a.strip('!')
d = a.lstrip()
e = a.rstrip()
print(b) # hello!!
print(c) #   hello
print(d) # hello!!    使用 lstrip() 函式可以只去除左邊
print(e) #   hello!!  使用 rstrip() 函式可以只去除右邊

下面的例子,會去除開頭與結尾指定的字元

s = '@!$##$#ABCDE%#$#%#$'
a = s.strip('!@#$%^&*(')
print(a)  # ABCDE

str.capitalize()

使用「str.capitalize()」將字串的字首變成大寫。

a = 'hello world, i am oxxo!'
b = a.capitalize()
print(b)    # Hello world, i am oxxo!

str.casefold()、str.lower()

使用「str.casefold()」和「str.lower()」可以將字串全部轉成小寫,str.casefold() 更會將一些其他語系的小寫字母作轉換。

a = 'Hello World, I am OXXO!'
b = a.casefold()
c = a.lower()
print(b)    # hello world, i am oxxo!
print(c)    # hello world, i am oxxo!

str.upper()

使用「str.upper()」可以將字串全部轉成大寫。

a = 'Hello World, I am OXXO!'
b = a.upper()
print(b)    # HELLO WORLD, I AM OXXO!

str.title()

使用「str.title()」可以將字串全部轉成標題 ( 每個單字字首大寫 )

a = 'Hello world, I am OXXO! How are you?'
b = a.title()
print(b)    # Hello World, I Am Oxxo! How Are You?

str.swapcase()

使用「str.swapcase()」可以將字串的大小寫對調。

a = 'Hello world, I am OXXO!'
b = a.swapcase()
print(b)   # hELLO WORLD, i AM oxxo!

str.count(sub, start, end)

使用「str.count(sub, start, end)」可以計算某段文字在字串中出現的次數 ( start、end 為範圍,可不填 )。

a = 'Hello world, I am OXXO!'
b = a.count('o')
c = a.count('o', 1, 5)
print(b)     # 2
print(c)     # 1

str.index(sub, start, end)

使用「str.index(sub, start, end)」可以尋找某段文字在字串中出現的位置 ( start、end 為範圍,可不填 )。

a = 'Hello world, I am OXXO!'
b = a.index('w')
print(b)     # 6

str.encode(encoding='utf-8', errors='strict')

使用「str.encode(encoding='utf-8', errors='strict')」可以針對字串進行編碼。

a = 'Hello world, 喔哈!'
b = a.encode(encoding='utf-8', errors='strict')
c = a.encode(encoding='BIG5', errors='strict')
print(b)    # b'Hello world, \xe5\x96\x94\xe5\x93\x88\xef\xbc\x81'
print(c)    # b'Hello world, \xb3\xe1\xab\xa2\xa1I'

sub in str

使用「sub in str」可以判斷字串中是否存在某段文字,回傳 True 或 False ( 也可使用 not in 判斷是否不存在 )。

a = 'Hello world!'
print('wo' in a)      # True
print('ok' not in a)  # True

str.isalnum()

使用「str.isalnum()」可以判斷字串中是否都是英文字母或數字 ( 不能包含空白或符號 ),回傳 True 或 False。

a = 'Helloworld123'
b = 'Helloworld123!!'
c = 'Hello world'
print(a.isalnum())   # True
print(b.isalnum())   # False ( 包含驚嘆號 )
print(c.isalnum())   # False ( 包含空白 )

str.isalpha()

使用「str.isalpha()」可以判斷字串中是否都是英文字母 ( 不能包含數字、空白或符號 ),回傳 True 或 False。

a = 'Helloworld'
b = 'Helloworld123'
c = 'Hello world'
print(a.isalpha())   # True
print(b.isalpha())   # False ( 包含數字 )
print(c.isalpha())   # Fasle ( 包含空白 )

str.isdigit()

使用「str.isdigit()」可以判斷字串中是否都是數字 ( 不能包含英文、空白或符號 ),回傳 True 或 False。

a = '12345'
b = 'Hello123'
c = '1 2 3'
print(a.isdigit())   # True
print(b.isdigit())   # False  ( 包含英文 )
print(c.isdigit())   # Fasle  ( 包含空白 )

str.islower()

使用「str.islower()」可以判斷字串中是否都是小寫英文字母 ( 忽略數字和符號 ),回傳 True 或 False。

a = 'hello world 123'
b = 'Hello World 123'
print(a.islower())    # True
print(b.islower())    # False ( H 和 W 是大寫 )

str.isupper()

使用「str.isupper()」可以判斷字串中是否都是大寫英文字母 ( 忽略數字和符號 ),回傳 True 或 False。

a = 'HELLO 123'
b = 'Hello 123'
print(a.isupper())    # True
print(b.isupper())    # False

str.istitle()

使用「str.istitle()」可以判斷字串中是否為標題 ( 每個單字字首大寫 ),回傳 True 或 False。

a = 'Hello World I Am Oxxo 123!!'
b = 'Hello World I Am OXXO 123!!'
c = 'Hello world, I am OXXO 123!!'
print(a.istitle())    # True
print(b.istitle())    # False ( OXXO 全都大寫 )
print(c.istitle())    # False ( world 和 am 字首沒有大寫 )

更多教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我有個超過一千篇教學的 STEAM 教育學習網,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 7.2 ) Python 文字與字串 ( 格式化 )
下一篇
( Day 8.2 ) Python 內建函式 ( 字串操作與轉換 )
系列文
跟著 OXXO 一起學 Python101
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言