字串有許多實用的方法,例如大小寫轉換:
>>> s = "Hello Kitty"
>>> print(f"全小寫 {s.lower()}")
>>> print(f"全大寫 {s.upper()}")
>>> print(f"大小寫反轉 {s.swapcase()}")
全小寫 hello kitty
全大寫 HELLO KITTY
大小寫反轉 hELLO kITTY
還有可以轉換成首字大寫的方法:
>>> s = "nOt tItlE"
>>> print(f"標題 {s.title()}")
標題 Not Title
字串也有一些幫忙判斷的方法,假設我們有一個字串列表如下:
arr = [
"[閒聊] 哥布林生存法則的梗是源自於哪裡啊?",
"[討論] 鳴人小時候說要當火影的時候三代在想什麼?",
"[閒聊] 笑戀是不是不會追求自己的感情",
"[新聞] 台灣票房揭曉!《小丑:雙重瘋狂》奪冠",
"[閒聊] 比洋德·尼特羅的強度大概多強?",
]
如果要判斷哪些標題屬於「閒聊」,可以使用 .startswith()
方法:
>>> for a in arr:
>>> if a.startswith("[閒聊]"):
>>> print(a)
[閒聊] 哥布林生存法則的梗是源自於哪裡啊?
[閒聊] 笑戀是不是不會追求自己的感情
[閒聊] 比洋德·尼特羅的強度大概多強?
.startswith
是用來判斷該字串的開頭是否為指定字串,以此例而言,只要判斷標題是不是 [閒聊]
開頭即可。如果想要知道字串是否以問號結尾,可以使用 .endswith()
方法:
>>> for a in arr:
>>> if a.endswith("?"):
>>> print(a)
[閒聊] 哥布林生存法則的梗是源自於哪裡啊?
[討論] 鳴人小時候說要當火影的時候三代在想什麼?
[閒聊] 比洋德·尼特羅的強度大概多強?
使用 .replace()
方法,可以將字串中的某些子字串替換掉:
>>> s = "今天適合出去玩嗎?那得看今天天氣好不好。"
>>> print(s.replace("今天", "明日"))
明日適合出去玩嗎?那得看明日天氣好不好。
.replace("今天", "明日")
會把所有的「今天」都換成「明日」,如果不想要全部換掉,可以再加上一個次數的參數:
>>> s = "今天適合出去玩嗎?那得看今天天氣好不好。"
>>> print(s.replace("今天", "明日", 1))
明日適合出去玩嗎?那得看今天天氣好不好。
改成 .replace("今天", "明日", 1)
就只會把第一個「今天」給換掉。
有些時候,我們並不希望字串有多餘的空格,這時可以用 .strip()
類的方法來移除多餘的空白:
>>> s = " apple "
>>> print(f"[{s}]")
>>> print(f"[{s.strip()}]") # 左右空白都移除
>>> print(f"[{s.lstrip()}]") # 只移除左邊的空白
>>> print(f"[{s.rstrip()}]") # 只移除右邊的空白
[ apple ]
[apple]
[apple ]
[ apple]
但是 .strip()
並不能移除中間的空白:
>>> s = "apple banana"
>>> print(s.strip())
apple banana
透過 in
關鍵字可以判斷字串是否包含某個子字串,結合 while
與 .replace()
可以移除中間的空格:
>>> while " " in s:
>>> s = s.replace(" ", " ")
>>> print(s)
apple banana
透過 .split()
方法可以把字串切割成列表:
>>> s = "Today is a good day!"
>>> print(s.split())
['Today', 'is', 'a', 'good', 'day!']
變成列表後,每個元素都還是字串,可以各自進行操作:
>>> s = "Today is a good day!"
>>> s = s.split()
>>>
>>> for i, ss in enumerate(s):
>>> s[i] = ss.title()
>>> s[3] = s[3].upper()
>>>
>>> s
['Today', 'Is', 'A', 'GOOD', 'Day!']
最後可以用 .join()
方法,把列表重新合併成字串:
>>> s = " ".join(s)
>>> print(s)
Today Is A GOOD Day!
.join()
是個特別的方法,被合併的列表是做為參數被傳進方法裡面,而真正用來發動此方法的是空格 " "
,代表用空格來串接這些元素,也可以換成其他字串:
>>> print("+".join(s)) # 用加號連接
>>> print("".join(s)) # 不使用任何字串連接
Today+Is+A+GOOD+Day!
TodayIsAGOODDay!
掌握這些字串方法,是文字處理相當重要的基本功。