Python3字串


字串在Python中是最普遍的型別。我們可以通過使用引號引起字元來簡單地建立他們。Python對待(處理)單引號和雙引號一樣。建立字串和一個變數賦值一樣簡單。例如 -
var1 = 'Hello World!'
var2 = "Python Programming"

存取字串的值

Python不支援的字元型別; 這些都被視為長度為1的字串,因此也被認為是一個子字串。
要存取子字串,用方括號以及索引或索引來獲得子切片。例如 -
#!/usr/bin/python3

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

更新字串

可以通過(再)分配給另一個字串變數來「更新」現有的字串。新的值可以相關聯它之前的值或使用另一個完全不同的字串。例如 -

#!/usr/bin/python3

var1 = 'Hello World!'

print ("Updated String :- ", var1[:6] + 'Python')
當執行上面的程式碼,它產生以下結果- 
Updated String :-  Hello Python

跳脫字元

下面的表格跳脫或不可列印字元的列表,可以用反斜槓符號來表示。
跳脫字元被解析; 帶單引號以及雙引號的字串。
反斜線
符號
十六進位制
字元
描述
\a 0x07
響鈴或警報
\b 0x08
Backspace鍵
\cx

Control-x
\C-x

Control-x
\e 0x1b Escape
\f 0x0c Formfeed
\M-\C-x

Meta-Control-x
\n 0x0a 新行
\nnn

Octal notation, where n is in the range 0.7
\r 0x0d Carriage return
\s 0x20 空格
\t 0x09 Tab
\v 0x0b Vertical tab
\x

Character 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
成員操作符 - 如果一個字元在給定字串中存在,則返回true
H in a = 1
not in
成員操作符 - 如果一個字元在給定的字串中不存在,則返回true
M not in = 1
r/R 原始字串 - 禁止跳脫字元實際意義。 字母「r」這是引號前導 print r'\n' 列印 \n , print R'\n' 列印 \n
%
格式 - 執行字串格式化
參見下一節

字串格式化操作

Python有一個最酷的功能是字串格式運算子%。這個操作符對於字串是是唯一的,並填補了 C語言中 printf()系列函式。下面是一個簡單的例子-

#!/usr/bin/python3

print ("My name is %s and weight is %d kg!" % ('Zara', 21)) 
當執行上面的程式碼,它產生以下結果 -
My name is Zara and weight is 21 kg!
這裡是一套完整能夠與%一起使用的符號的列表 -
格式符號
轉變
%c 字元
%s
通過str()來轉換格式化字串
%i
有符號十進位制整數
%d
有符號十進位制整數
%u
無符號十進位制整數
%o
八進位制整數
%x
十六進位制整數(小寫字母)
%X
十六進位制整數(大寫字母)
%e
指數符號(小寫「e」)
%E
指數計數法(以大寫「E」)
%f
浮點實數
%g
%f和%e的簡寫
%G
%f和%E的簡寫
其它支援的符號和功能都列在下表中 -
符號 功能描述
*
引數指定寬度或精度
-
左對齊
+
顯示符號
<sp>
在一個正數前留一個空格
#
新增前導零('0')八進位制或前導0x「或」0X「十六進位制,取決於是否使用了'x'或'X'。
0
墊留下了零(而不是空格)
%
'%%'保留一個常數「%」
(var)
對映變數(字典引數)
m.n.
m是最小總寬度和n是小數點後顯示數量(如果appl)

三重引號

Python的三重引號允許字串跨越多行,包括逐字換行符,製表符,以及任何其他特殊字元
三重引號的語法是由三個連續的單或雙引號組成。
#!/usr/bin/python3

para_str = """this is a long string that is made up of
several lines and non-printable characters such as
TAB ( \t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ \n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print (para_str) 

當執行上面的程式碼,它產生了以下結果。注意,如何每一個特殊字元已經轉換到它的列印形式,一直到最後的NEWLINE之間的字串的結尾關閉三重引號。還要注意的是出現新行或者使用一行或末尾明確回車其換碼(\ n)-

this is a long string that is made up of
several lines and non-printable characters such as
TAB (    ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
 ], or just a NEWLINE within
the variable assignment will also show up. 

原始字串不會把反斜槓作為一個特殊字元。 把一個原始字串中的每個字元保持原來編寫的方式 -

#!/usr/bin/python3
(
print ('C:\\nowhere')
當執行上面的程式碼,它產生以下結果 -
C:\nowhere
現在使用原始字串。我們會把表示式在 r'expression' 如下-
#!/usr/bin/python3

print (r'C:\\nowhere')
當執行上面的程式碼,它產生以下結果 -
C:\\nowhere

Unicode字串

在Python 3,所有的字串都是以Unicode表示。在Python2中內部儲存為8位元ASCII,因此,它需要附上「u」以讓明確使用的是Unicode。但在Python3 中現在不再是必要的。

字串內建的方法

Python包括以下內建的方法操作字串-
SN
方法及描述
1

capitalize()

將字串的第一個字母大寫
2

center(width, fillchar)

返回以fillchar填充的字串以及原始字串中心到總 width 列
3

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

計數str有多少次出現在在字串中;或如果開始索引beg和結束索引 end 給出,則計運算元字串在一個字串中出現的次數
4

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

利用註冊編解碼器解碼編碼字串。編碼預設是系統預設字串編碼
5

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

返回字串的編碼字串版本; 在出錯時,預設引發 ValueError 錯誤,除非用「ignore」或「replace」
6

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

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

7

expandtabs(tabsize=8)

擴充套件製表符字串到多個空格; 預設每個製表符為8個空格,如果不提供製表符的大小
8

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

確定是否在字串或字串找到一個子字元str(如果開始索引beg和結束索引end給出),如果找到則返回索引,否則返回-1
9

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

同 find()方法,如果str沒有找到則引發異常
10

isalnum()

如果string至少有1個字元,所有字元是字母數位則返回true,否則返回false
11

isalpha()

如果string至少有1個字元,所有字元是字母則返回true,否則為false
12

isdigit()

如果字串僅包含數位返回true,否則為false
13

islower()

如果string至少有1個可轉大小寫字元,所有可轉大小字元是小寫字母則返回true,否則為false
14

isnumeric()

如果一個Unicode字串只包含數位字元則返回true,否則為false
15

isspace()

如果字串只包含空格字元則返回true,否則為false
16

istitle()

如果字串是否正確「titlecased」(首字母大寫)返回true,否則為false
17

isupper()

如果string至少有1個可轉大小寫字元,所有可轉大小字元是大寫字母則返回true,否則為false
18

join(seq)

合併(符連線)序列 seq 融入一個字串,以及使用分隔符字串的字串表示。
19

len(string)

返回字串的長度
20

ljust(width[, fillchar])

返回一個空格填充字串與原字串左對齊到總寬度列
21

lower()

字串中所有大寫字母轉換為小寫
22

lstrip()

刪除字串的所有前導空格
23

maketrans()

返回要在轉換函式使用的轉換表
24

max(str)

從字串str返回最大拼音/字母字元
25

min(str)

從字串str返回最小拼音/字母字元
26

replace(old, new [, max])

使用 new 替換所有出現在字串中的 old 或 如果 max 給定,替換現的 max
27

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

類似於 find(),但在字串中是向後搜尋
28

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

類似於 index(),但在字串中是向後搜尋
29

rjust(width,[, fillchar])

返回一個空格填充字串,以及原始字串以總寬度列向右對齊
30

rstrip()

刪除字串結尾的所有空格
31

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

根據分隔符str(如果未提供則預設為空格)分裂字串並返回子字串列表; 如果num給定,則分割成至多num個子字串
32

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

拆分所有(或num)字串換行符,並返回每行去除換行後的列表
33

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

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

strip([chars])

對字串同時執行lstrip()和rstrip()
35

swapcase()

反轉在字串中的所有字母大小寫(大寫轉小寫,小寫轉大寫)
36

title()

返回「titlecased」字串的版本,也就是所有的字開頭大寫,其餘小寫
37

translate(table, deletechars="")

根據翻譯表str(256字母)轉換字串,刪除那些在del字串
38

upper()

將字串的小寫字母轉換為大寫
39

zfill (width)

返回原字串左邊用零填充到總寬度的字元; zfill()保留給任何正負號(少一個零)
40

isdecimal()

如果一個Unicode字串只包含小數點字元則返回 true,否則為 false