2021年2月15日 星期一

Python 學習筆記 : 字串處理函數與字串物件的方法

雖然 Python 自然語言處理 (NLP) 有許多函式庫與套件可用, 很少使用低階的內建字串處理函數與字串物件方法, 但字串處理是 NLP 的基礎, 所以我把之前整理的 Python 基本語法筆記中與字串處理相關的函數與方法整理成一張 cheat sheet (小抄) 如下 : 


1. 運算子 in :  

此運算子用來檢查字串中是否含有指定子字串, 通常與 if 語句搭配使用 :

if "o" in "hello world": 

傳回值為 True/False. 
 

2. 內建字串相關函數 :   

Python 內建函數中與字串處理相關者有三個 :


 內建字串函數 說明
 len(str) 傳回字串 str 中的字元數 (中文字與轉義字元如 '\n' 都算 1 個)
 ord(char) 傳回字元 char 的 ASCII 碼 (10 進制)
 chr(code) 傳回 ASCOII 碼 code 的字元


3. 字串物件方法 : 

Python 的字串物件提供豐富的方法可用來處理字串 : 


 大小寫轉換方法 說明
 capitalize() 將首字母大寫, 其餘小寫
 lower() 將全部字元轉成小寫
 upper() 將全部字元轉成大寫
 swapcase() 將字元大寫變小寫, 小寫變大寫 
 title() 將每個單字的首字元大寫, 其餘小寫 

 字串檢查方法 說明
 islower() 字串中的英文字母全部是小寫傳回真, 否則傳回假
 isupper() 字串中的英文字母全部是大寫傳回真, 否則傳回假
 istitle() 字串中每個單字的首字元大寫其餘小寫傳回真, 否則傳回假 
 isspace() 字串只含有空白字元 ('\t','\v','\n','\r','\f',' ') 傳回真, 否則傳回假
 isalpha() 字串只含有英文字母傳回真, 否則傳回假
 isdigit() 字串只含有數字 (0~9) 傳回真, 否則傳回假
 isdecimal() 字串只含有 10 進位數字傳回真, 否則傳回假
 isalnum() 字串只含有英文字母與數字傳回真, 否則傳回假
 isidentifier() 字串是否為合法的識別字
 isprintable() 字串只含有可見字元

 子字串搜尋方法 說明
 find(sub [,start [, end]]) 尋找子字串 sub, 找到傳回第一組之起始索引, 否則傳回 -1
 rfind(sub [,start [, end]]) 尋找子字串 sub, 找到傳回最後一組之起始索引, 否則傳回 -1
 index(sub [,start [, end]]) 與 find 相同, 但找不到子字串時會產生 valueError 錯誤
 rindex(sub [,start [, end]]) 與 rfind 相同, 但找不到子字串時會產生 valueError 錯誤
 count(sub [,start [, end]]) 在字串中尋找子字串 sub, 傳回子字串出現的次數
 startswith(pfx [,start [, end]]) 若字串以子字串 pfx 開頭傳回真, 否則傳回假 
 endswith(sfx [,start [, end]]) 若字串以子字串 sfx 結尾傳回真, 否則傳回假

 字串物件的去頭去尾方法 說明
 strip([chars]) 去除字串首尾的指定字元集合 chars, 預設刪除空白 
 lstrip([chars]) 去除字串開頭的指定字元集合 chars, 預設刪除空白 
 rstrip([chars]) 去除字串結尾的指定字元集合 chars, 預設刪除空白

 字串物件的填充方法 說明
 center(width [,fillchar]) 將字串居中擴展為 width 個字元, 左右以 fillchar 填充, 預設為空格
 ljust(width [,fillchar]) 將字串靠左擴展為 width 個字元, 右方以 fillchar 填充, 預設為空格
 rjust(width [,fillchar]) 將字串靠右擴展為 width 個字元, 左方以 fillchar 填充, 預設為空格
 zfill(width) 在字串左方補 0 使總長度擴展為 width 字元  
 expandtabs([tabsize]) 將字串中的 tab 字元以 tabsize 個空格取代 

 字串物件的分割方法 說明
 partition(sep) 以 sep 為界由左至右分割字串為三部分, 傳回 sep 居中的 tuple 
 rpartition(sep) 以 sep 為界由右至左分割字串為三部分, 傳回 sep 居中的 tuple 
 split(sep [,maxsplit]) 以 sep 為界由左至右分割字串 maxsplit 次, 結果以 list 傳回
 rsplit(sep [,maxsplit]) 以 sep 為界由右至左分割字串 maxsplit 次, 結果以 list 傳回
 splitlines([keepends]) 以 \n 為界分割字串, 預設不保留跳行字元 (keepends=False)

 字串物件之串接取代方法 說明
 join(iterable) 以字串為分隔字元串接可迭代物件 (list/tuple) 元素為新字串
 replace(old, new [, count]]) 將子字串 old 全部用 new 替換, 或指定替換 count 次


沒有留言:

張貼留言