- Python程序設計與算法基礎教程(第2版)(微課版)
- 江紅 余青松
- 1448字
- 2019-11-15 20:19:02
4.6 str類型
字符串(str)是一個有序的字符集合。在Python中沒有獨立的字符數據類型,字符即長度為1的字符串。
Python的內置數據類型str用于字符串處理。str對象的值為字符系列。str對象(字符串)是不可變對象。
4.6.1 字符串字面量
使用單引號或雙引號括起來的內容是字符串字面量,Python解釋器自動創建str型對象實例。Python字符串字面量可以使用以下4種方式定義。
(1)單引號(' '):包含在單引號中的字符串,其中可以包含雙引號。
(2)雙引號(" "):包含在雙引號中的字符串,其中可以包含單引號。
(3)三單引號(''' '''):包含在三單引號中的字符串,可以跨行。
(4)三雙引號(""" """):包含在三雙引號中的字符串,可以跨行。
【例4.13】 字符串字面量示例。

注意:兩個緊鄰的字符串,如果中間只有空格分隔,則自動拼接為一個字符串。例如:

4.6.2 字符串編碼
Python 3中的字符默認為16位Unicode編碼,ASCII碼是Unicode編碼的子集。例如,字符'A'的ASCII碼為65,對應的八進制為101,對應的十六進制為41。
使用u''或U''的字符串稱為Unicode字符串。在Python 3中默認為Unicode字符串。

使用內置函數ord()可以把字符轉換為對應的Unicode碼;使用內置函數chr()可以把十進制數轉換為對應的字符。例如:

4.6.3 轉義字符
特殊符號(不可打印字符)可以使用轉義序列表示。轉義序列以反斜杠開始,緊跟一個字母,例如“\n”(新行)和“\t”(制表符)。如果希望字符串中包含反斜杠,則它前面必須還有另一個反斜杠。
Python轉義字符如表4-9所示。
表4-9 特殊符號的轉義序列

【例4.14】 轉義字符示例。

轉義字符后跟Unicode編碼也可以表示字符。例如:

使用r''或R''的字符串稱為原始字符串,其中包含的任何字符都不進行轉義。

4.6.4 str對象
str是Python的內置數據類型,創建str類型的對象實例的基本形式如下。

通過創建str對象可以把任意對象轉換為str對象,返回object.__str__(),如果對象沒有定義__str__(),則返回repr(object)。
【例4.15】 str對象示例。

4.6.5 str對象的屬性和方法
使用str對象提供的方法可以實現常用的字符串處理功能。str對象是不可變對象,故調用方法返回的字符串是新創建的對象。str對象的方法有兩種調用方式,即字符串對象的方法和str類方法。
【例4.16】 str對象方法示例。

4.6.6 字符串的運算
字符串對象支持關系運算、使用運算符“+”拼接兩個字符串、內置函數、str對象方法等運算操作。
字符串實際上是字符序列,故支持序列數據類型的基本操作,包括索引訪問、切片操作、連接操作、重復操作、成員關系操作,以及求字符串長度、最大值、最小值等。例如,通過len(s)可以獲取字符串s的長度;如果其長度為0,則為空字符串。具體內容可以參見第5章。
在Python語言中,常用的str數據類型對象的運算表達式如表4-10所示。
表4-10 Python常用的字符串表達式

4.6.7 對象轉換為字符串
使用內置函數str()可以把數值轉換為字符串。實際上,在使用print(123)輸出數值時將自動調用str(123)函數把123轉換為字符串,然后輸出。
Python還提供了另一個內置函數repr(),該函數返回一個對象的更精確的字符串表示形式。
在大多數情況下,內置函數repr()和str()的結果一致。
【例4.17】 對象轉換為字符串示例。

4.6.8 字符串的格式化
通過字符串的格式化可以輸出特定格式的字符串。Python中字符串的格式化有以下幾種方式:

有關字符串格式化的詳細信息請參見本書中的第5.5.3節。
例如:

【例4.18】 字符串示例(string.py):格式化輸出字符串堆積的三角形。其中,str.center()方法用于字符串兩邊填充;str.rjust(width[,fillchar])方法用于字符串右填充,具體可以參見本書中的第15.2節。

程序運行結果如下。

4.6.9 格式化字符串變量
在Python 3.6中增加了對格式化字符串變量的支持,以f開始的字符串可以包含嵌入在花括號“{}”中的變量,稱之為字符串變量替換(插值)。例如:
