Python 的內置字符串方法(收藏專用)

字符串處理是非常常用的技能,但 Python 內置字符串方法太多,常常遺忘,爲了便於快速參考,特地依據 Python 3.5.1 給每個內置方法寫了示例並進行了歸類,便於大家索引。
PS: 可以點擊概覽內的綠色標題進入相應分類或者通過右側邊欄文章目錄快速索引相應方法。

概覽

字符串大小寫轉換

  • str.capitalize()
  • str.lower()
  • str.casefold()
  • str.swapcase()
  • str.title()
  • str.upper()

字符串格式輸出

  • str.center(width[, fillchar])
  • str.ljust(width[, fillchar]); str.rjust(width[, fillchar])
  • str.zfill(width)
  • str.expandtabs(tabsize=8)
  • str.format(^args, ^^kwargs)
  • str.format_map(mapping)

字符串搜索定位與替換

  • str.count(sub[, start[, end]])
  • str.find(sub[, start[, end]]); str.rfind(sub[, start[, end]])
  • str.index(sub[, start[, end]]); str.rindex(sub[, start[, end]])
  • str.replace(old, new[, count])
  • str.lstrip([chars]); str.rstrip([chars]); str.strip([chars])
  • static str.maketrans(x[, y[, z]]); str.translate(table)

字符串的聯合與分割

  • str.join(iterable)
  • str.partition(sep); str.rpartition(sep)
  • str.split(sep=None, maxsplit=-1); str.rsplit(sep=None, maxsplit=-1)
  • str.splitlines([keepends])

字符串條件判斷

  • str.endswith(suffix[, start[, end]]); str.startswith(prefix[, start[, end]])
  • str.isalnum()
  • str.isalpha()
  • str.isdecimal(); str.isdigit(); str.isnumeric()
  • str.isidentifier()
  • str.islower()
  • str.isprintable()
  • str.isspace()
  • str.istitle()
  • str.isupper()

字符串編碼

  • str.encode(encoding=”utf-8″, errors=”strict”)

大小寫轉換

str.capitalize()

將首字母轉換成大寫,需要注意的是如果首字沒有大寫形式,則返回原字符串。

str.lower()

將字符串轉換成小寫,其僅對 ASCII 編碼的字母有效。

str.casefold()

將字符串轉換成小寫,Unicode 編碼中凡是有對應的小寫形式的,都會轉換。

str.swapcase()

對字符串字母的大小寫進行反轉。

但需要注意的是 s.swapcase().swapcase() == s 不一定爲真:

這裏 'Μ'(是 mu 不是 M) 的小寫正好與 'μ' 的寫法一致。

str.title()

將字符串中每個“單詞”首字母大寫。其判斷“單詞”的依據則是基於空格和標點,所以應對英文撇好所有格或一些英文大寫的簡寫時,會出錯。

str.upper()

將字符串所有字母變爲大寫,會自動忽略不可轉成大寫的字符。

需要注意的是 s.upper().isupper() 不一定爲 True

字符串格式輸出

str.center(width[, fillchar])

將字符串按照給定的寬度居中顯示,可以給定特定的字符填充多餘的長度,如果指定的長度小於字符串長度,則返回原字符串。

str.ljust(width[, fillchar]); str.rjust(width[, fillchar])

返回指定長度的字符串,字符串內容居左(右)如果長度小於字符串長度,則返回原始字符串,默認填充爲 ASCII 空格,可指定填充的字符串。

str.zfill(width)

用 ‘0’ 填充字符串,並返回指定寬度的字符串。

str.expandtabs(tabsize=8)

用指定的空格替代橫向製表符,使得相鄰字符串之間的間距保持在指定的空格數以內。

str.format(^args, ^^kwargs)

格式化字符串的語法比較繁多,官方文檔已經有比較詳細的 examples,這裏就不寫例子了,想了解的童鞋可以直接戳這裏 Format examples.

str.format_map(mapping)

類似 str.format(*args, **kwargs) ,不同的是 mapping 是一個字典對象。

字符串搜索定位與替換

str.count(sub[, start[, end]])

str.find(sub[, start[, end]]); str.rfind(sub[, start[, end]])

str.index(sub[, start[, end]]); str.rindex(sub[, start[, end]])

與 find() rfind() 類似,不同的是如果找不到,就會引發 ValueError

str.replace(old, new[, count])

str.lstrip([chars]); str.rstrip([chars]); str.strip([chars])

static str.maketrans(x[, y[, z]]); str.translate(table)

maktrans 是一個靜態方法,用於生成一個對照表,以供 translate 使用。
如果 maktrans 僅一個參數,則該參數必須是一個字典,字典的 key 要麼是一個 Unicode 編碼(一個整數),要麼是一個長度爲 1 的字符串,字典的 value 則可以是任意字符串、None或者 Unicode 編碼。

如果 maktrans 有兩個參數,則兩個參數形成映射,且兩個字符串必須是長度相等;如果有第三個參數,則第三個參數也必須是字符串,該字符串將自動映射到 None

字符串的聯合與分割

str.join(iterable)

用指定的字符串,連接元素爲字符串的可迭代對象。

str.partition(sep); str.rpartition(sep)

str.split(sep=None, maxsplit=-1); str.rsplit(sep=None, maxsplit=-1)

str.splitlines([keepends])

字符串以行界符爲分隔符拆分爲列表;當 keepends 爲True,拆分後保留行界符,能被識別的行界符見官方文檔

字符串條件判斷

str.endswith(suffix[, start[, end]]); str.startswith(prefix[, start[, end]])

str.isalnum()

字符串和數字的任意組合,即爲真,簡而言之:

只要 c.isalpha()c.isdecimal()c.isdigit()c.isnumeric() 中任意一個爲真,則 c.isalnum() 爲真。

str.isalpha()

Unicode 字符數據庫中作爲 “Letter”(這些字符一般具有 “Lm”, “Lt”, “Lu”, “Ll”, or “Lo” 等標識,不同於 Alphabetic) 的,均爲真。

str.isdecimal(); str.isdigit(); str.isnumeric()

三個方法的區別在於對 Unicode 通用標識的真值判斷範圍不同:

isdecimal: Nd,
isdigit: No, Nd,
isnumeric: No, Nd, Nl

digit 與 decimal 的區別在於有些數值字符串,是 digit 卻非 decimal ,具體戳 這裏

str.isidentifier()

判斷字符串是否可爲合法的標識符。

str.islower()

str.isprintable()

判斷字符串的所有字符都是可打印字符或字符串爲空。Unicode 字符集中 “Other” “Separator” 類別的字符爲不可打印的字符(但不包括 ASCII 的空格(0x20))。

str.isspace()

判斷字符串中是否至少有一個字符,並且所有字符都是空白字符。

str.istitle()

判斷字符串中的字符是否是首字母大寫,其會忽視非字母字符。

str.isupper()

字符串編碼

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


發佈了20 篇原創文章 · 獲贊 22 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章