Python 3.1 快速導覽 - 內建字串型態 (string)

字串 (string) 屬於不可變 (immutable) 的序列 (sequence) 型態,可進行以下序列通用的計算

計算描述
x in s判斷 x 是否在 s 中
x not in s判斷 x 是否不在 s 中
s + t連接 s 及 t
s * n, n * s將 s 重複 n 次連接 s 本身
s[i]取得索引值 i 的元素
s[i:j]取得索引值 i 到 j 的子序列
s[i:j:k]取得索引值 i 到 j ,間隔 k 的子序列
len(s)回傳 s 的元素個數
min(s)回傳 s 中的最小值
max(s)回傳 s 中的最大值
s.index(i)取得 s 中第一次出現 i 的索引值
s.count(i)累計 s 中 i 出現的個數


字串型態有以下的方法 (method)
方法描述
str.capitalize()回傳將 str 改成首字母大寫,其餘字母小寫的字串
str.center(width[, fillchar])回傳一個將 str 設置字串中央,長度 width 的新字串, fillchar 為填充字元,預設為空格
str.count(sub[, start[, end]])計算 sub 出現的次數, start 為起始計算索引值, end 為結束索引值
str.encode(encoding="utf-8", errors="strict")回傳 encoding 版本的 bytes 物件
str.endswith(suffix[, start[, end]])判斷 str 是否以 suffix 結尾
str.expandtabs([tabsize])將 tab 符號以 tabsize 的空格數替換
str.find(sub[, start[, end]])回傳 sub 第一次出現的索引值
str.format(*args, **kwargs)進行格式化字串運算
str.index(sub[, start[, end]])回傳 sub 第一次出現的索引值
str.isalnum()判斷字串中的字元是否都是字母或數字
str.isalpha()判斷字串中的字元是否都是字母
str.isdecimal()判斷字串中所有字元是否是十進位數字
str.isdigit()判斷字串中所有字元是否是數字
str.isidentifier()判斷字串是否可作為合法的識別字
str.islower()判斷字串中所有字母字元是否都是小寫字母
str.isnumeric()判斷字串中所有字元是否是數字
str.isprintable()判斷字串中所有字元是否都屬於可見字元
str.isspace()判斷字串是否為空格字元
str.istitle()判斷字串是否適合當作標題
str.isupper()判斷字串中所有字母字元是否都是大寫字母
str.join(iterable)回傳將 str 連結 iterable 各元素的字串
str.ljust(width[, fillchar])回傳將 str 在寬度 width 向左對齊的字串, fillchar 為填充字元,預設為空格
str.lower()將 str 的英文字母都改成小寫
str.lstrip([chars])回傳將 str 左邊具有 chars 字元去除的拷貝版本, chars 預設為空格符號
static str.maketrans(x[, y[, z]])回傳 x 與 y 配對的 Unicode 編碼字典,若有提供 z , z 中的字元會跟 None 配對
str.partition(sep)以 sep 分割 str 為三個部份,結果回傳具有三個子字串的序對
str.replace(old, new[, count])將 str 中的 old 子字串以 new 代換
str.rfind(sub[, start[, end]])尋找最右邊的 sub ,也就是索引值最大的 sub
str.rindex(sub[, start[, end]])尋找最右邊的 sub ,也就是索引值最大的 sub
str.rjust(width[, fillchar])回傳將 str 在寬度 width 向右對齊的字串, fillchar 為填充字元,預設為空格
str.rpartition(sep)以 sep 從最右端分割 str 為三個部份,結果回傳具有三個子字串的序對
str.rsplit([sep[, maxsplit]])將 str 從最右端以 sep 分割成子字串,回傳儲存子字串的串列, maxsplit 為子字串最多的數量
str.rstrip([chars])從 str 的最右端中移除 chars 字元,預設為空白字元
str.split([sep[, maxsplit]])將 str 以 sep 分割成子字串,回傳儲存子字串的串列, maxsplit 為子字串最多的數量
str.splitlines([keepends])將 str 以新行符號分割成子字串,回傳儲存子字串的串列
str.startswith(prefix[, start[, end]])判斷 str 是否以 prefix 開頭
str.strip([chars])從 str 中移除 chars 字元,預設為空白字元
str.swapcase()將 str 中的英文字母進行大小寫轉換
str.title()將 str 轉換成作為標題的字串
str.translate(map)將 str 中的字元以 map 中配對的字元轉換
str.upper()將 str 的英文字母都改成大寫
str.zfill(width)回傳以 0 塞滿 width 的新字串


字串是用單引號或雙引號圍起來的複合資料型態,裡頭每一個字元都是字串的元素,舉例示範如下
a = "Free your mind."

print("a: ", a)
print("'mind' in a:", "mind" in a)
print("'you' not in a:", "you" not in a)
print("a + a: ", a + a)
print("a * 2: ", a * 2)
print("a[9]: ", a[9])
print("a[9:14]: ", a[9:13])
print("a[2:14:3]: ", a[2:13:3])
print("len(a): ", len(a))
print("max(a): ", max(a))
print("min(a): ", min(a))
print("a.index('e'): ", a.index("e"))
print("a.count('e'): ", a.count("e"))

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:stringtype.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月


執行結果如下



中英文術語對照
字串string
不可變immutable
序列sequence
方法method


內建型態




2 則留言:

Unknown 提到...

剛好看到一些問題:
isalpha()應該為判斷字串中的字元是否「全部都是」字母
isalnum()應為判斷字串是否沒有含有字母及數字以外之字元

BTW, 謝謝你的文章~

Kaiching Chang 提到...

已修改,感謝指正 ^_^