Python - 字串



Python 中,字串Unicode 字元 的不可變序列。每個字元根據 Unicode 標準都有一個唯一的 數值。但是,整個序列即使所有字元都是數字,也沒有任何數值。為了區分字串與數字和其他識別符號,字元序列在其字面表示中包含在單引號、雙引號或三引號內。因此,1234 是一個數字(整數),但 '1234' 是一個字串。

建立 Python 字串

只要包含相同的字元序列,單引號雙引號三引號就沒有區別。因此,以下字串表示是等效的。

示例

>>> 'Welcome To TutorialsPoint'
'Welcome To TutorialsPoint'
>>> "Welcome To TutorialsPoint"
'Welcome To TutorialsPoint'
>>> '''Welcome To TutorialsPoint'''
'Welcome To TutorialsPoint'
>>> """Welcome To TutorialsPoint"""
'Welcome To TutorialsPoint'

檢視以上語句,可以清楚地看到,Python 內部將字串儲存為包含在單引號中。

在舊版本中,字串在內部儲存為 8 位 ASCII,因此需要附加 'u' 以使其成為 Unicode。從 Python 3 開始,所有字串都以 Unicode 表示。因此,現在不再需要在字串後新增 'u'。

訪問字串中的值

Python 不支援字元型別;這些被視為長度為 1 的字串,因此也被視為子字串。

要訪問子字串,請使用方括號進行切片,並使用索引或索引來獲取子字串。例如 -

var1 = 'Hello World!'
var2 = "Python Programming"

print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5])

當以上程式碼執行時,會產生以下結果 -

var1[0]:  H
var2[1:5]:  ytho

更新字串

您可以透過將變數(重新)分配給另一個字串來“更新”現有字串。新值可以與其先前值相關,也可以是完全不同的字串。例如 -

var1 = 'Hello World!'
print ("Updated String :- ", var1[:6] + 'Python')

當以上程式碼執行時,會產生以下結果 -

Updated String :-  Hello Python

訪問我們的 Python - 修改字串 教程,以瞭解有關更新/修改字串的更多資訊。

跳脫字元

下表列出了可以使用反斜槓表示法表示的轉義或不可列印字元。

一個 跳脫字元 會被解釋;在單引號和雙引號字串中。

反斜槓表示法 十六進位制字元 描述
\a 0x07 響鈴或警報
\b

0x08 退格鍵
\cx Ctrl-x
\C-x Ctrl-x
\e 0x1b Escape(轉義)
\f 0x0c 換頁
\M-\C-x Meta-Ctrl-x
\n 0x0a 換行
\nnn 八進位制表示法,其中n的範圍是0到7
\r 0x0d 回車
\s 0x20 空格
\t 0x09 Tab(製表符)
\v 0x0b 垂直製表符
\x 字元x
\xnn 十六進位制表示法,其中n的範圍是0到9、a到f或A到F

字串特殊運算子

假設字串變數a儲存'Hello',變數b儲存'Python',則:

運算子 描述 示例
+ 連線 - 將運算子兩側的值連線起來 a + b 將得到HelloPython
* 重複 - 建立新的字串,連線多個相同字串的副本 a*2 將得到-HelloHello
[] 切片 - 獲取給定索引處的字元 a[1] 將得到e
[ : ]範圍切片 - 獲取給定範圍內的字元 a[1:4] 將得到ell
in成員關係 - 如果字元存在於給定字串中,則返回TrueH in a 將得到1
not in 成員關係 - 如果字元不存在於給定字串中,則返回True M not in a 將得到1
r/R 原始字串 - 抑制跳脫字元的實際含義。原始字串的語法與普通字串完全相同,除了原始字串運算子“r”,它位於引號之前。“r”可以是小寫(r)或大寫(R),並且必須放置在第一個引號標記的正前方。 print r'\n' 輸出 \n,print R'\n' 輸出 \n
% 格式化 - 執行字串格式化 參見下一節

字串格式化運算子

Python 最酷的功能之一是字串格式化運算子 %。此運算子是字串獨有的,彌補了缺少 C 的 printf() 系列函式的不足。下面是一個簡單的示例:

print ("My name is %s and weight is %d kg!" % ('Zara', 21)) 

當以上程式碼執行時,會產生以下結果 -

My name is Zara and weight is 21 kg!

以下是可與 % 一起使用的完整符號列表:

序號 格式符號 & 轉換
1

%c

字元

2

%s

在格式化之前透過 str() 進行字串轉換

3

%i

帶符號十進位制整數

4

%d

帶符號十進位制整數

5

%u

無符號十進位制整數

6

%o

八進位制整數

7

%x

十六進位制整數(小寫字母)

8

%X

十六進位制整數(大寫字母)

9

%e

指數表示法(帶小寫“e”)

10

%E

指數表示法(帶大寫“E”)

11

%f

浮點實數

12

%g

%f 和 %e 中較短者

13

%G

%f 和 %E 中較短者

其他支援的符號和功能列在以下表格中:

序號 符號 & 功能
1

*

引數指定寬度或精度

2

-

左對齊

3

+

顯示符號

4

<sp>

在正數前留一個空格

5

#

新增八進位制前導零('0')或十六進位制前導'0x'或'0X',具體取決於是否使用了'x'或'X'。

6

0

用零(而不是空格)從左側填充

7

%

'%%' 將為您提供單個文字'%'

8

(var)

對映變數(字典引數)

9

m.n.

m 是最小總寬度,n 是顯示小數點後數字的位數(如果適用)。

訪問我們的 Python - 字串格式化 教程,瞭解各種格式化字串的方法。

Python 字串中的雙引號

如果要將某些文字作為字串的一部分嵌入雙引號中,則字串本身應放在單引號中。要嵌入單引號文字,字串應寫成雙引號。

示例

var = 'Welcome to "Python Tutorial" from TutorialsPoint'
print ("var:", var)

var = "Welcome to 'Python Tutorial' from TutorialsPoint"
print ("var:", var)

這將產生以下輸出

var: Welcome to "Python Tutorial" from TutorialsPoint
var: Welcome to 'Python Tutorial' from TutorialsPoint

三引號

要形成一個帶有三引號的字串,可以使用三個單引號或三個雙引號 - 兩個版本相似。

示例

var = '''Welcome to TutorialsPoint'''
print ("var:", var)

var = """Welcome to TutorialsPoint"""
print ("var:", var)

這將產生以下輸出

var: Welcome to TutorialsPoint
var: Welcome to TutorialsPoint

Python 多行字串

三引號字串可用於形成多行字串。

示例

var = '''
Welcome To
Python Tutorial
from TutorialsPoint
'''
print ("var:", var)

這將產生以下輸出

var:
Welcome To
Python Tutorial
from TutorialsPoint

字串的算術運算子

字串是非數值資料型別。顯然,我們不能對字串運算元使用算術運算子。在這種情況下,Python 會引發 TypeError。

print ("Hello"-"World")

執行上述程式時,將生成以下錯誤:

>>> "Hello"-"World"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'str'

獲取 Python 字串的型別

Python 中的字串是 str 類的物件。可以使用 type() 函式進行驗證。

示例

var = "Welcome To TutorialsPoint"
print (type(var))

這將產生以下輸出

<class 'str'>

內建字串方法

Python 包含以下內建方法來操作字串:

序號 方法及描述
1 capitalize()

將字串的首字母大寫。

2 casefold()

將字串中的所有大寫字母轉換為小寫。類似於 lower(),但也可以處理 UNICODE 字元。

3 center(width, fillchar)

返回一個用空格填充的字串,其中原始字串居中到總共 width 列。

4 count(str, beg= 0,end=len(string))

計算 str 在字串中出現的次數,如果給定起始索引 beg 和結束索引 end,則計算其在字串的子字串中出現的次數。

5 decode(encoding='UTF-8',errors='strict')

使用為 encoding 註冊的編解碼器解碼字串。encoding 預設為預設字串編碼。

6 encode(encoding='UTF-8',errors='strict')

返回字串的編碼字串版本;如果出錯,預設情況下會引發 ValueError,除非 errors 與 'ignore' 或 'replace' 一起給出。

7 endswith(suffix, beg=0, end=len(string))

確定字串或字串的子字串(如果給定起始索引 beg 和結束索引 end)是否以 suffix 結尾;如果這樣,則返回 true,否則返回 false。

8 expandtabs(tabsize=8)

將字串中的製表符擴充套件為多個空格;如果未提供 tabsize,則預設為每個製表符 8 個空格。

9 find(str, beg=0 end=len(string))

確定 str 是否出現在字串中或字串的子字串中(如果給定起始索引 beg 和結束索引 end),如果找到則返回索引,否則返回 -1。

10 format(*args, **kwargs)

此方法用於格式化當前字串值。

11 format_map(mapping)

此方法也用於格式化當前字串,唯一的區別是它使用對映物件。

12 index(str, beg=0, end=len(string))

與 find() 相同,但如果未找到 str 則引發異常。

13 isalnum()

如果字串至少包含 1 個字元,並且所有字元都是字母數字字元,則返回 true,否則返回 false。

14 isalpha()

如果字串至少包含 1 個字元,並且所有字元都是字母字元,則返回 true,否則返回 false。

15 isascii()

如果字串中的所有字元都來自 ASCII 字元集,則返回 True。

16 isdecimal()

如果 Unicode 字串僅包含十進位制字元,則返回 true,否則返回 false。

17 isdigit()

如果字串僅包含數字,則返回 true,否則返回 false。

18 isidentifier()

檢查字串是否為有效的 Python 識別符號。

19 islower()

如果字串至少包含 1 個大小寫字元,並且所有大小寫字元都為小寫,則返回 true,否則返回 false。

20 isnumeric()

如果 Unicode 字串僅包含數字字元,則返回 true,否則返回 false。

21 isprintable()

檢查字串中的所有字元是否都可列印。

22 isspace()

如果字串僅包含空白字元,則返回 true,否則返回 false。

23 istitle()

如果字串已正確“標題化”,則返回 true,否則返回 false。

24 isupper()

如果字串至少包含一個大小寫字元,並且所有大小寫字元都為大寫,則返回 true,否則返回 false。

25 join(seq)

將序列 seq 中元素的字串表示形式合併(連線)到一個字串中,並使用分隔符字串。

26 ljust(width[, fillchar])

返回一個用空格填充的字串,其中原始字串左對齊到總共 width 列。

27 lower()

將字串中的所有大寫字母轉換為小寫。

28 lstrip()

刪除字串中所有前導空白。

29 maketrans()

返回一個要在 translate 函式中使用的轉換表。

30 partition()

在分隔符第一次出現的位置將字串拆分為三個字串元組。

31 removeprefix()

刪除字首字串後返回字串。

32 removesuffix()

刪除字尾字串後返回字串。

33 replace(old, new [, max])

將字串中所有出現的 old 替換為 new,或者如果給定 max,則最多替換 max 次出現。

34 rfind(str, beg=0,end=len(string))

與 find() 相同,但在字串中向後搜尋。

35 rindex( str, beg=0, end=len(string))

與 index() 相同,但在字串中向後搜尋。

36 rjust(width,[, fillchar])

返回一個用空格填充的字串,其中原始字串右對齊到總共 width 列。

37 rpartition()

在分隔符最後一次出現的位置將字串拆分為三個字串元組。

38 rsplit()

從末尾拆分字串並返回子字串列表。

39 rstrip()

刪除字串的所有尾隨空白。

40 split(str="", num=string.count(str))

根據分隔符 str(如果未提供則為空格)拆分字串,並返回子字串列表;如果給定,則最多拆分為 num 個子字串。

41 splitlines( num=string.count('\n'))

在所有(或 num)換行符處拆分字串,並返回每個行的列表,其中已刪除換行符。

42 startswith(str, beg=0,end=len(string))

確定字串或字串的子字串(如果給定起始索引 beg 和結束索引 end)是否以子字串 str 開頭;如果這樣,則返回 true,否則返回 false。

43 strip([chars])

對字串執行 lstrip() 和 rstrip()。

44 swapcase()

反轉字串中所有字母的大小寫。

45 title()

返回字串的“標題化”版本,即所有單詞都以大寫字母開頭,其餘為小寫。

46 translate(table, deletechars="")

根據轉換表 str(256 個字元)轉換字串,刪除 del 字串中的那些字元。

47 upper()

將字串中的小寫字母轉換為大寫。

48 zfill (width)

返回用零從左側填充到總共 width 個字元的原始字串;用於數字,zfill() 保留給定的任何符號(減去一個零)。

字串的內建函式

以下是我們可以與字串一起使用的內建函式:

序號 函式及描述
1 len(list)

返回字串的長度。

2 max(list)

返回字串 str 中最大的字母字元。

3 min(list)

返回字串 str 中最小的字母字元。

廣告