第七章 字串

2021-07-31 16:01:26 字數 4460 閱讀 6128

python字串——乙個有序的字元的集合,用來儲存和表現基於文字的資訊。

字串常量

1、單雙引號字串是一樣的:

在python字串中,單引號和雙引號字元是可以互換的。

2、用轉義序列代表特殊位元組:

反斜槓用來引入特殊的位元組編碼,是轉義序列。

3、raw字串抑制轉義:

如果字母r(大寫或小寫)出現在字串的第乙個引號的前面,它會關閉轉義機制。

4、三重引號編寫多行字串塊:

python還有一種三重引號內的字串常量格式,有時候稱作塊字串,這是一種對編寫多行文字資料來說很便捷的語法。

實際應用中的字串

1、基本操作:

2、索引和分片:

因為將字串定義為字元的有序集合,所以我們能夠通過其位置獲得它們的元素。

擴充套件分片:

在python2.3中,分片表示式增加了乙個可選的第三個索引,用作步進(有時稱為是stride)。

3、字串轉換工具:

int函式將字串轉換為數字,而str函式將數字轉換為字串表示式(實際上,它看起來和列印出來的效果是一樣的)。repr函式(以及之前的反引號表示式,在python3.0中刪除了)也能夠將乙個物件轉換為字串形式,然後這些返回的物件將作為**的字串,可以重新建立物件。

①、字串**轉換:

單個的字元可以通過將其傳給內建的ord函式轉換為其對應的ascii碼——這個函式實際上返回的是這個字元在記憶體中對應的字元的二進位制值。而chr函式將會執行相反的操作,獲取ascii碼並將其住轉化為對應的字元。

4、修改字串:

若要改變乙個字串,需要利用合併、分片這樣的工具來建立並賦值給乙個新的字串,倘若必要的話,還要將這個結果賦值給字串最初的變數名。

同樣可以通過像replace這樣的字串方法來實現。

可以通過字串格式化表示式來建立新的文字值。

字串方法

除表示式運算子之外,字串還提供了一系列的方法去實現更複雜的本文處理任務。

1、字串方法例項:修改字串:

①、為了在已存在的字串中建立新的文字值,我們可以通過分片和合併這樣的操作來建立新的字串。

②、如果僅為了替換乙個字串的話,那麼可以使用字串的replace方法來實現。

③、內建的list函式(或乙個物件構造函式呼叫)以任意序列中的元素創立乙個新的列表。一旦字串以這樣的形式出現,你無需在每次修改後進行複製就可以對其進行多次修改。修改之後,,如果你需要將其變回乙個字串(例如,寫入乙個檔案時),可以用字串方法join將列表「合成」乙個字串。

2、字串方法例項:文字解析:

字串方法的常規角色是以簡單的文字分析的形式出現的——分析結構並提取子串。

字串的split方法將乙個字串分割為乙個子串的列表,以分隔符字串為標準。

3、實際應用中的其他常見字串方法

與字串方法相比,其他的技術有時也能夠達到相同的結果——例如,成員操作符in能夠用來檢測乙個子字串是否存在,並且length和分片操作能夠用來做字串末尾的檢測。

字串格式化方法format,它提供了更高階的替換工具,在乙個單個的步驟中組合多個操作。

4、最初的字串模組(在python3.0中刪除):

字串格式化表示式

①、如今的python中的字串格式化可以以兩種形式實現:

字串格式化表示式:

這是從python誕生的時候就有的最初的技術;這是基於c語言的「printf」模型,並且在大多數現有的**中使用。

字串格式化方法呼叫:

這是python2.6和python3.0新增加的技術,這是python獨有的方法,並且和字串格式化表示式的功能有很大的重疊。

②、格式化字串:

1.在%操作符的左側位置放置乙個需要進行格式化的字串,這個字串帶有乙個或多個嵌入的轉換目標,都以%開頭(例如,%d)。

2.在%操作符右側放置乙個(或多個,嵌入到元組中)物件,這些物件將會插入到左側想讓python進行格式化字串的乙個(或多個)轉換目標的位置上去。

③、格式化總是會返回新的字串作為結果而不是對左側的字串進行修改。

1、更高階的字串格式化表示式:

轉換目標的通用結構看上去是這樣的:

%[(name)][flags][width][.precision]typecode。

2、基於字典的字串格式化:

字串的格式化同時也允許左邊的轉換目標來引用右邊字典的鍵來提取對應的值。

字串格式化呼叫方法

1、基礎知識:

簡而言之,python2.6和python3.0(及其以後版本)中的新的字串物件的format方法使用主體字串作為模板,並且接受任意多個表示將要根據模板替換的值的引數。在主體字串中,花括號通過位置指出替換目標及將要插入的引數。

2、新增鍵、屬性和偏移量:

格式化字串可以指定物件屬性和關鍵字——就像在常規的python語法中一樣,方括號指定字典鍵,而點表示位置或關鍵字所引用的一項物件屬性。

格式化字串中的方括號可以指定列表(及其他的序列)偏移量以執行索引,但是,只有單個的正的偏移才能在格式化字串的語法中有效,因此,這一功能並不是像你想的那樣通用。和%表示式一樣,要指定負的偏移或分片,或使用任意表示式,必須在格式化字串自身之外執行表示式。

3、新增具體格式化:

另一種和%表示式類似的是,可以在格式化字串中新增額外的語法來實現更具體的層級。

如下是可以在乙個格式化字串中作為替代目標出現的形式化結構:

冒號後的formatspec組成形式上的描述如下(方括號表示可選的組成,並且不能編寫為常量):

[fill[align][sign][#][0][width][.precision][typecode]

4、與%格式化表示式比較:

5、為什麼用新的格式化方法:

①、額外功能:

方法呼叫支援表示式所沒有的一些額外功能,例如二進位制型別編碼和千分位分組。

②、顯示值引用:

③、方法名和通用引數:

有了python3.1的這一自動技術修改,格式化方法唯一明確保留的潛在優點就是它用乙個更加便於記憶的格式化方法名替代了%操作符,並且不區分單個和多個替代值。

④、將來可能廢棄:

通常意義下的型別分類

1、同樣分類的型別共享其操作集合:

數字(整數、浮點數、二進位制、分數等)

支援加法和乘法等。

序列(字串、列表、元組)

支援索引、分片和合併等。

對映(字典)

支援通過鍵的索引等。

2、可變型別能夠在原處修改:

不可變型別(數字、字串、元組、不可變集合)

不可變的分類中沒有哪個物件型別支援原處修改,儘管我們總是可以執行表示式來建立新的物件並將其結果分配給變數。

可變型別(列表、字典、可變集合)

相反,可變的型別總是可以通過操作原處修改,而不是建立新的物件。儘管這樣的物件可以複製,但原處修改支援直接修改。

本章小結

本章,我們深入學習了字串這個物件型別。我們學習了如何編寫字串常量,探索了字串操作,包括序列表示式、字串格式化以及字串方法呼叫。在這個過程中,我們深入學習了各種概念,例如,分片、方法呼叫、三重引號字串。我們也定義了一些關於變數型別的核心概念。例如,序列,它會共享整個操作的集合。

Python 第七章字串

一.單選題 共7題,70.0分 a 分片 b 合併 c 索引 d 賦值 正確答案 a world world print hello world a helloworld b hello world c hello world d hello world 正確答案 a a abc def b joi...

第七章 字串 字元流

本文系閱讀閱讀原章節後總結概括得出。由於需要我進行一定的概括提煉,如有不當之處歡迎讀者斧正。如果你對內容有任何疑問,歡迎共同交流討論。如果你覺得這兩節的內容比較雜亂,強烈推薦我的這篇總結 你其實真的不懂print hello,world 如果型別比較複雜,你可能需要考慮實現streamable協議。...

第七章 字串 字串除錯

本文系閱讀閱讀原章節後總結概括得出。由於需要我進行一定的概括提煉,如有不當之處歡迎讀者斧正。如果你對內容有任何疑問,歡迎共同交流討論。如果你覺得這兩節的內容比較雜亂,強烈推薦我的這篇總結 你其實真的不懂print hello,world 不知道你有沒有注意到乙個細節,不管你使用什麼型別的引數,pri...