字元串是 Python 中最常用的數據類型。我們可以使用引號( ' 或 " )來創建字元串。 創建字元串很簡單,只要為變數分配一個值即可。 python中單引號和雙引號使用完全相同。 使用三引號( ''' 或 """ )可以指定一個多行字元串。 轉義符 '\' 自然字元串, 通過在字元串前加r或R。 ...
字元串是 Python 中最常用的數據類型。我們可以使用引號( ' 或 " )來創建字元串。
創建字元串很簡單,只要為變數分配一個值即可。
- python中單引號和雙引號使用完全相同。
- 使用三引號( ''' 或 """ )可以指定一個多行字元串。
- 轉義符 '\'
- 自然字元串, 通過在字元串前加r或R。 如 r"this is a line with \n" 則\n會顯示,並不是換行。
- python允許處理unicode字元串,加首碼u或U, 如 u"this is an unicode string"。
- 字元串是不可變的。
- 按字面意義級聯字元串,如"this " "is " "string"會被自動轉換為this is string。
- Python 沒有單獨的字元類型,一個字元就是長度為1的字元串
- Python 字元串不能被改變。向一個索引位置賦值,比如word[0] = 'm'會導致錯誤
- 反斜杠可以用來轉義,使用r可以讓反斜杠不發生轉義。
- 字元串可以用+運算符連接在一起,用*運算符重覆。
- Python中的字元串有兩種索引方式,從左往右以0開始,從右往左以-1開始。
例如:
1 word = '字元串' 2 sentence = "這是一個句子。" 3 paragraph = """這是一個段落, 4 可以由多行組成"""
1 >>> print('Ru\noob') 2 Ru 3 oob 4 >>> print(r'Ru\noob') 5 Ru\noob 6 >>>
1 #!/usr/bin/python3 2 3 str = 'Runoob' 4 5 print (str) # 輸出字元串 6 print (str[0:-1]) # 輸出第一個到倒數第二個的所有字元 7 print (str[0]) # 輸出字元串第一個字元 8 print (str[2:5]) # 輸出從第三個開始到第五個的字元 9 print (str[2:]) # 輸出從第三個開始的後的所有字元 10 print (str * 2) # 輸出字元串兩次 11 print (str + "TEST") # 連接字元串
執行以上程式會輸出如下結果:
1 Runoob 2 Runoo 3 R 4 noo 5 noob 6 RunoobRunoob 7 RunoobTEST
Python 訪問字元串中的值
Python 不支持單字元類型,單字元也在Python也是作為一個字元串使用。
Python 訪問子字元串,可以使用方括弧來截取字元串,如下實例:
1 #!/usr/bin/python3 2 3 var1 = 'Hello World!' 4 var2 = "Runoob" 5 6 print ("var1[0]: ", var1[0]) 7 print ("var2[1:5]: ", var2[1:5])
以上實例執行結果:
1 var1[0]: H 2 var2[1:5]: unoo
Python字元串更新
你可以截取字元串的一部分並與其他欄位拼接,如下實例:
1 #!/usr/bin/python3 2 3 var1 = 'Hello World!' 4 5 print ("已更新字元串 : ", var1[:6] + 'Runoob!')
以上實例執行結果:
1 已更新字元串 : Hello Runoob!
Python轉義字元
在需要在字元中使用特殊字元時,python用反斜杠(\)轉義字元。如下表:
Python字元串運算符
下表實例變數a值為字元串 "Hello",b變數值為 "Python":
1 #!/usr/bin/python3 2 3 a = "Hello" 4 b = "Python" 5 6 print("a + b 輸出結果:", a + b) 7 print("a * 2 輸出結果:", a * 2) 8 print("a[1] 輸出結果:", a[1]) 9 print("a[1:4] 輸出結果:", a[1:4]) 10 11 if( "H" in a) : 12 print("H 在變數 a 中") 13 else : 14 print("H 不在變數 a 中") 15 16 if( "M" not in a) : 17 print("M 不在變數 a 中") 18 else : 19 print("M 在變數 a 中") 20 21 print (r'\n') 22 print (R'\n')
以上實例輸出結果為:
1 a + b 輸出結果: HelloPython 2 a * 2 輸出結果: HelloHello 3 a[1] 輸出結果: e 4 a[1:4] 輸出結果: ell 5 H 在變數 a 中 6 M 不在變數 a 中 7 \n 8 \n
Python字元串格式化
Python 支持格式化字元串的輸出 。儘管這樣可能會用到非常複雜的表達式,但最基本的用法是將一個值插入到一個有字元串格式符 %s 的字元串中。
1 #!/usr/bin/python3 2 3 print ("我叫 %s 今年 %d 歲!" % ('小明', 10))
以上實例輸出結果:
1 我叫 小明 今年 10 歲!
python字元串格式化符號:
格式化操作符輔助指令:
Python2.6 開始,新增了一種格式化字元串的函數 str.format(),它增強了字元串格式化的功能。
1 Name = input("Name:") 2 Age = int(input("Age:")) 3 Job = input("Job:") 4 Salary = int(input("Salary:")) 5 6 msg = """ 7 =======Info of %s=========== 8 Name: %s 9 Age: %d 10 Job: %s 11 Salary: %d 12 ========= end =============== 13 """ % (Name, Name, Age, Job, Salary) 14 15 print(msg)View Code
運行結果為:
1 Name:lhm 2 Age:23 3 Job:coding 4 Salary:5699 5 6 =======Info of lhm=========== 7 Name: lhm 8 Age: 23 9 Job: coding 10 Salary: 5699 11 ========= end ===============View Code
Unicode 字元串
在Python2中,普通字元串是以8位ASCII碼進行存儲的,而Unicode字元串則存儲為16位unicode字元串,這樣能夠表示更多的字元集。使用的語法是在字元串前面加上首碼 u。
在Python3中,所有的字元串都是Unicode字元串。
Python 的字元串內建函數
Python 的字元串常用內建函數如下:
序號 | 方法及描述 |
---|---|
1 |
capitalize() |
2 |
返回一個指定的寬度 width 居中的字元串,fillchar 為填充的字元,預設為空格。 |
3 |
count(str, beg= 0,end=len(string)) 返回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數 |
4 |
bytes.decode(encoding="utf-8", errors="strict") Python3 中沒有 decode 方法,但我們可以使用 bytes 對象的 decode() 方法來解碼給定的 bytes 對象,這個 bytes 對象可以由 str.encode() 來編碼返回。 |
5 |
encode(encoding='UTF-8',errors='strict') 以 encoding 指定的編碼格式編碼字元串,如果出錯預設報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace' |
6 |
endswith(suffix, beg=0, end=len(string)) |
7 |
把字元串 string 中的 tab 符號轉為空格,tab 符號預設的空格數是 8 。 |
8 |
find(str, beg=0 end=len(string)) 檢測 str 是否包含在字元串中,如果指定範圍 beg 和 end ,則檢查是否包含在指定範圍內,如果包含返回開始的索引值,否則返回-1 |
9 |
index(str, beg=0, end=len(string)) 跟find()方法一樣,只不過如果str不在字元串中會報一個異常. |
10 |
如果字元串至少有一個字元並且所有字元都是字母或數字則返 回 True,否則返回 False |
11 |
如果字元串至少有一個字元並且所有字元都是字母則返回 True, 否則返回 False |
12 |
如果字元串只包含數字則返回 True 否則返回 False.. |
13 |
如果字元串中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是小寫,則返回 True,否則返回 False |
14 |
如果字元串中只包含數字字元,則返回 True,否則返回 False |
15 |
如果字元串中只包含空白,則返回 True,否則返回 False. |
16 |
如果字元串是標題化的(見 title())則返回 True,否則返回 False |
17 |
如果字元串中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是大寫,則返回 True,否則返回 False |
18 |
以指定字元串作為分隔符,將 seq 中所有的元素(的字元串表示)合併為一個新的字元串 |
19 |
返回字元串長度 |
20 |
返回一個原字元串左對齊,並使用 fillchar 填充至長度 width 的新字元串,fillchar 預設為空格。 |
21 |
轉換字元串中所有大寫字元為小寫. |
22 |
截掉字元串左邊的空格或指定字元。 |
23 |
創建字元映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字元串,表示需要轉換的字元,第二個參數也是字元串表示轉換的目標。 |
24 |
返回字元串 str 中最大的字母。 |
25 |
返回字元串 str 中最小的字母。 |
26 |
把 將字元串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。 |
27 |
rfind(str, beg=0,end=len(string)) 類似於 find()函數,不過是從右邊開始查找. |
28 |
rindex( str, beg=0, end=len(string)) 類似於 index(),不過是從右邊開始. |
29 |
返回一個原字元串右對齊,並使用fillchar(預設空格)填充至長度 width 的新字元串 |
30 |
刪除字元串字元串末尾的空格. |
31 |
split(str="", num=string.count(str)) num=string.count(str)) 以 str 為分隔符截取字元串,如果 num 有指定值,則僅截取 num 個子字元串 |
32 |
按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。 |
33 |
startswith(str, beg=0,end=len(string)) 檢查字元串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查。 |
34 |
在字元串上執行 lstrip()和 rstrip() |
35 |
將字元串中大寫轉換為小寫,小寫轉換為大寫 |
36 |
返回"標題化"的字元串,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見 istitle()) |
37 |
translate(table, deletechars="") 根據 str 給出的表(包含 256 個字元)轉換 string 的字元, 要過濾掉的字元放到 deletechars 參數中 |
38 |
轉換字元串中的小寫字母為大寫 |
39 |
返回長度為 width 的字元串,原字元串右對齊,前面填充0 |
40 |
檢查字元串是否只包含十進位字元,如果是返回 true,否則返回 false。 |