應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

目錄

  • 字符串操作
  • 字符串運算符
  • 字符串內置函數
  • 字符串索引
  • 字符串切片
  • 在字符串切片過程中指定步幅
  • 向字符串中插入變量
  • 修改字符串
  • 字符串內置方法
  • bytes對象
  • 定義bytes對象字面量
  • 使用內置bytes()函數定義一個bytes對象
  • bytes對象上的操作
  • bytearray對象
  • 結論
  • 私信小編01或者007即可獲取數十套PDF或者零基礎入門資料!
應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

*運算符

* 運算符創建字符串的多個副本。如果s是一個字符串,n是一個整數,下面任何一種表達式都可以返回一個由n個s的副本所連接而成的字符串:

s * n

n * s

以下是兩種形式的示例:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

乘數操作數n必須是一個整數。你也許會認為它必須是一個正整數,但有趣的是,它可以是0或者負數,在這種情況下結果為空字符串。

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

如果你要創建一個字符串並通過 "foo" * -8 為其賦值將其初始化成為一個空字符串,所有人都會認為你有點蠢。不過這樣做確實是有效的。

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

正如您在Python中的基本數據類型教程中所看到的一樣,Python提供了許多內置於解釋器並始終可用的函數。下面是一些可以作用於字符串的函數:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

Unicode是一個雄心勃勃的標準,它試圖在每個可能的平臺上,對各種可能的語言,為每個可能的字符提供數字編碼。 Python 3廣泛支持Unicode,包括允許字符串中使用Unicode字符。

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

str(obj)

返回一個對象的字符串表示

事實上,Python中的任何對象都可以呈現為字符串。 str(obj)返回對象obj的字符串表示形式:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

可以通過索引訪問各個字符,如下所示:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

嘗試超出字符串末尾的索引會導致錯誤:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

字符串索引也可以用負數指定,在這種情況下,索引在字符串中由後向前開始:-1指向最後一個字符,-2指向倒數第二個字符,依此類推。以下是顯示字符串中正負索引的相同圖表"foobar":

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

正數和負數索引

下面是一些負數索引的例子:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

嘗試使用超出字符串開頭的負數進行索引會導致錯誤:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

對於任何字符串s和任何整數n(0 ≤ n ≤ len(s)),s[:n] + s[n:]將等於s:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

省略兩個索引將完整地返回原始字符串。然而它不是原始字符串的副本,它是對原始字符串的引用:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

如果切片中的第一個索引大於或等於第二個索引,則Python返回一個空字符串。如果你正在尋找一種另類的生成空字符串的方式,那麼這是一種方法:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

負數索引也可以與切片一起使用。-1表示最後一個字符,-2倒數第二個,依此類推,就像基本的索引一樣。下圖顯示瞭如何使用正數索引和負數索引從字符串"foobar"中切割子字符串"oob":

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

正負索引在字符串切片中的使用

下面是對應的Python代碼:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

在字符串切片過程中指定步幅

還有一種切片語法的變形可以進行介紹。再添加一個參數:第三個參數指明步幅(也叫做步長),表明在切片中檢索字符時每次跳過多少個字符。

例如,對於字符串"foobar",切片0:6:2以第一個字符開頭,以最後一個字符(整個字符串)結束,並且每次跳過第二個字符。如下圖所示:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

帶有步幅的字符串索引

類似的,1:6:2指定以第二個字符(索引1)開頭並以最後一個字符結束的切片,並且步幅值再次為2導致每次都有一個字符被跳過:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

另一個帶有步幅的字符串索引

說明的REPL代碼如下:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

對於任何切片,可以省略第一個和第二個索引,並分別默認為第一個和最後一個字符:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

您也可以指定負數步幅值,在這種情況下,Python會從後向前逐步處理字符串。在這種情況下,起始/第一個索引應該大於結束/第二個索引:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

在上面的示例中,5:0:-2表示“從最後一個字符開始,每次後退2步,直到(但不包括)第一個字符”。

當您後退時,如果省略第一個和第二個索引,則以直觀的方式反轉默認值:第一個索引默認為字符串的結尾,第二個索引默認為開頭。下面是一個例子:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

下面是反轉字符串的常見範例:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

Python的三種引用機制中的任何一種都可用於定義f-string:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

修改字符串

簡而言之,你做不到。字符串是Python認為不可變的數據類型之一,意味著無法更改。實際上,到目前為止您看到的所有數據類型都是不可變的。(Python確實提供了可變的數據類型,您很快就會看到。)

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

在對象上調用方法的語法如下:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

這將調用對象obj上的方法.foo()。指定傳遞給方法的參數(如果有)。

稍後在面向對象編程的討論中,您將探索有關定義和調用方法的更多信息。目前,我們的目標是介紹Python支持的一些常用的用於對字符串對象進行操作的內置方法。

在以下方法定義中,方括號([])中指定的參數是可選的。

大小寫轉換

本組方法對目標字符串執行大小寫轉換。

s.capitalize()

目標字符串首字母大寫

s.capitalize()返回一個s的副本,第一個字符轉換為大寫,所有其他字符轉換為小寫:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

非字母字符不變:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.lower()

將字母字符轉換為小寫

s.lower()返回s中所有字母字符轉換為小寫的副本:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.swapcase()

轉換字母字符大小寫

s.swapcase()返回一個s中大寫字母字符轉換為小寫,小寫字母轉化為大寫的副本:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.title()

將目標字符串轉化為單詞首字母大寫

s.title()返回s的一個副本,其中每個單詞的第一個字母轉換為大寫,其餘字母為小寫:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

該方法使用相當簡單的算法。它並不試圖區分重要和不重要的單詞,而且它不能優雅地處理撇號,所有格或首字母縮略詞:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.upper()

將字母字符轉化為大寫

s.upper()返回s中所有字母字符轉換為大寫的副本:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

查找和替換

這些方法提供了在目標字符串中搜索指定子字符串的各種方式。

該組中的每個方法都支持可選的參數。這些參數在字符串切片時被解釋:方法的操作僅限於目標字符串中從位置字符開始到(不包括)位置字符的部分。如果被指定了但沒有,則該方法應用於目標字符串中從開始直到字符串的末尾的部分。

s.count([, [, ]])

計算目標字符串中子字符串的出現次數

s.count()返回字符串s中非重疊子串出現的次數:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

計數被限制在由所指定的子串內,如果參數被設定的話:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.endswith([, [, ]])

判斷目標字符串是否以給定子字符串結尾

如果s以指定的結尾,s.endswith()返回True,否則返回False:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

判斷被限制在由所指定的子串內,如果參數被設定的話:

s.find([, [, ]]

在目標字符串中搜索給定的子字符串

s.find()返回在s中找到子字符串的最小索引:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

如果指定的子串沒有找到,該方法返回-1:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

檢索被限制在由所指定的子串內,如果參數被設定的話:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.index([, [, ]])

在目標字符串中搜索給定的子字符串

這個方法與.find()功能相同,只是在查找不到時會產生一個異常而非返回-1:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.rfind([, [, ]])

從末尾開始搜索目標字符串中的給定子字符串

s.rfind()返回在s中找到子字符串的最大索引:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

和.find()一樣,如果指定的子串沒有找到,該方法返回-1:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

檢索被限制在由所指定的子串內,如果參數被設定的話:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.rindex([, [, ]])

從末尾開始搜索目標字符串中的給定子字符串

這個方法與.rfind()功能相同,只是在查找不到時會產生一個異常而非返回-1:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.startswith([, [, ]])

判斷目標字符串是否以給定子字符串開頭

如果s以指定的開頭,s.startswith()返回True,否則返回False:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

判斷被限制在由所指定的子串內,如果參數被設定的話:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

字符分類

此組方法根據字符串包含的字符對字符串進行分類。

s.isalnum()

確定目標字符串是否由字母數字字符組成

如果s是非空的且其所有字符都是字母或數字,s.isalnum()返回True,否則返回False:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.isalpha()

判斷目標字符串是否由字母字符組成

如果s是非空的並且其所有字符都是字母,s.isalpha()返回True,否則返回False:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.isdigit()

判斷目標字符串是否由數字字符組成

如果s是非空的並且其所有字符都是數字,s.digit()返回True,否則返回False:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.isidentifier()

判斷目標字符串是否是有效的Python標識符

如果s根據語言定義是有效的Python標識符,s.isidentifier()返回True,否則返回False:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

注意:與Python關鍵字匹配的字符串.isidentifier()將返回True,即使它實際上不是有效的標識符:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

您可以調用iskeyword()函數測試字符串是否與Python關鍵字匹配,該函數包含在名為keyword的模塊中。一種可能的方法如下所示:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

如果你真的想確保一個字符串可以作為一個有效的Python標識符,你應該檢查.isidentifier()是否為True以及iskeyword()是否為False。

請參閱 Python Modules and Packages—An Introduction閱讀有關Python模塊的更多信息。

s.islower()

判斷目標字符串的字母字符是否為小寫

如果s是非空的並且它包含的所有字母字符都是小寫的,s.islower()則返回True,否則返回False。忽略非字母字符:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

s.isprintable()

判斷目標字符串是否完全由可打印字符組成

如果s為空或其包含的所有字母字符都是可打印的,s.isprintable()返回True。如果s包含至少一個不可打印的字符,則返回False。忽略非字母字符:

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

應屆畢業生憑什麼企業會給他20K的薪資?他的字符串筆記數十萬字

注意:如果s是空字符串,這是唯一個返回True的.isxxxx()方法。所有其它方法都對空字符串返回False。

未完待續,這人確實很負責。一個字符串的知識點!居然能寫出這麼全面!你值得這20K的月薪!


分享到:


相關文章: