Python字符串
字符串是Python中最受歡迎、最常使用的數據類型。可以通過用引號括起字符來創建它們。 Python將單引號與雙引號相同。創建字符串和向一個變量賦值一樣簡單。 例如 -
var1 = 'Hello World!'
var2 = "Python Programming"
1.訪問字符串中的值
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
2.更新字符串
可以通過將變量分配給另一個字符串來「更新」現有的字符串。 新值可以與其原值相關或完全不同的字符串。 例如 -
#!/usr/bin/python3
var1 = 'Hello World!'
print ("Updated String :- ", var1[:6] + 'Python')
當執行上述代碼時,會產生以下結果 -
Updated String :- Hello Python
3.轉義字符
下表是可以用反斜槓表示法表示轉義或不可打印字符的列表。單引號以及雙引號字符串的轉義字符被解析。
反斜線符號
十六進制字符
描述/說明
\a
0x07
鈴聲或警報
\b
0x08
退格
\cx
Control-x
\C-x
Control-x
\e
0x1b
Escape
\f
0x0c
換頁
\M-\C-x
Meta-Control-x
\n
0x0a
新一行
\nnn
八進制符號,其中n
在0.7範圍內
\r
0x0d
回車返回
\s
0x20
空格
\t
0x09
製表符
\v
0x0b
垂直製表符
\x
字符x
\xnn
十六進制符號,其中n
在0~9
,a~f
或A~F
範圍內
4.字符串特殊運算符
假設字符串變量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
'Y' not in a
結果爲 1
r/R
原始字符串 - 抑制轉義字符的實際含義。原始字符串的語法與正常字符串的格式完全相同,除了原始字符串運算符在引號之前加上字母「r
」。 「r
」可以是小寫(r
)或大寫(R
),並且必須緊靠在第一個引號之前。
print(r'\n')
將打印 \n
,或者 print(R'\n')
將打印 \n
,要注意的是如果不加r
或R
作爲前綴,打印的結果就是一個換行。
%
格式 - 執行字符串格式化
請參見本文第5節
5.字符串格式化運算符
Python最酷的功能之一是字符串格式運算符%
。 這個操作符對於字符串是獨一無二的,彌補了C語言中 printf()
系列函數。 以下是一個簡單的例子 -
#!/usr/bin/python3
print ("My name is %s and weight is %d kg!" % ('Maxsu', 71))
當執行上述代碼時,會產生以下結果 -
My name is Maxsu and weight is 71 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
#
根據是否使用「x
」或「X
」,添加八進制前導零(‘0
‘)或十六進制前導’0x
‘或’0X
‘。
6
0
使用零作爲左邊墊符(而不是空格)
7
%
‘%%
‘留下一個文字「%
」
8
(var)
映射變量(字典參數)
9
m.n.
m
是最小總寬度,n
是小數點後顯示的位數(如果應用)
6.三重引號
Python中的三重引號允許字符串跨越多行,包括逐字記錄的新一行,TAB
和任何其他特殊字符。
三重引號的語法由三個連續的單引號或雙引號組成。
#!/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)
當執行上述代碼時,會產生以下結果。注意每個單獨的特殊字符如何被轉換成其打印形式,它是直到最後一個NEWLINEs
在「up
」之間的字符串的末尾,並關閉三重引號。 另請注意,NEWLINEs
可能會在一行或其轉義碼(\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
現在演示如何使用原始的字符串。將表達式修改爲如下 -
#!/usr/bin/python3
print (r'C:\\nowhere')
當執行上述代碼時,會產生以下結果 -
C:\\nowhere
7.Unicode字符串
在Python 3中,所有的字符串都用Unicode表示。在Python 2內部存儲爲8
位ASCII,因此需要附加’u
‘使其成爲Unicode,而現在不再需要了。
內置字符串方法
Python包括以下內置方法來操作字符串 -
編號
方法
說明
1
capitalize()
把字符串的第一個字母轉爲大寫
2
center(width, fillchar)
返回使用fillchar
填充的字符串,原始字符串以總共width
列爲中心。
3
count(str, beg = 0,end = len(string))
計算字符串中出現有多少次str
或字符串的子字符串(如果開始索引beg
和結束索引end
,則在beg
~`end`範圍匹配)。
4
decode(encoding = ‘UTF-8’,errors = ‘strict’)
使用編碼encoding
解碼該字符串。 編碼默認爲默認字符串encoding
。
5
encode(encoding = ‘UTF-8’,errors = ‘strict’)
返回字符串的編碼字符串版本; 在錯誤的情況下,默認是拋出ValueError
,除非使用’ignore
‘或’replace
‘給出錯誤。
6
endswith(suffix, beg = 0, end = len(string))
確定字符串或字符串的子字符串(如果啓動索引結束和結束索引結束)都以後綴結尾; 如果是則返回true
,否則返回false
。
7
expandtabs(tabsize = 8)
將字符串中的製表符擴展到多個空格; 如果沒有提供tabize
,則默認爲每個製表符爲8
個空格。
8
find(str, beg = 0 end = len(string))
如果索引beg
和結束索引end
給定,則確定str
是否在字符串或字符串的子字符串中,如果找到則返回索引,否則爲-1
。
9
index(str, beg = 0, end = len(string))
與find()
相同,但如果沒有找到str
,則引發異常。
10
isalnum()
如果字符串至少包含1
個字符,並且所有字符均爲數字,則返回true
,否則返回false
。
11
isalpha()
如果字符串至少包含1
個字符,並且所有字符均爲字母,則返回true
,否則返回false
。
12
isdigit()
如果字符串只包含數字則返回true
,否則返回false
。
13
islower()
如果字符串至少包含1
個字母,並且所有字符均爲小寫,則返回true
,否則返回false
。
14
isnumeric()
如果unicode
字符串只包含數字字符,則返回true
,否則返回false
。
15
isspace()
如果字符串只包含空格字符,則返回true
,否則返回false
。
16
istitle()
如果字符串正確「標題大小寫」,則返回true
,否則返回false
。
17
isupper()
如果字符串至少包含一個可變大小寫字符,並且所有可變大小寫字符均爲大寫,則返回true
,否則返回false
。
18
join(seq)
將序列seq
中的元素以字符串表示合併(併入)到具有分隔符字符串的字符串中。
19
len(string)
返回字符串的長度
20
ljust(width[, fillchar])
返回一個空格填充的字符串,原始字符串左對齊到總共width
列。
21
lower()
將字符串中的所有大寫字母轉換爲小寫。
22
lstrip()
刪除字符串中的所有前導空格
23
maketrans()
返回在translate
函數中使用的轉換表。
24
max(str)
從字符串str
返回最大字母字符。
27
replace(old, new [, max])
如果給定max
值,則用new
或最多最大出現替換字符串中所有出現的舊字符(old
)。
28
rindex( str, beg = 0, end = len(string))
與index()
相同,但在字符串中向後搜索。
29
rjust(width,[, fillchar])
返回一個空格填充字符串,原始字符串右對齊到總共寬度(width
)列。
30
rstrip()
刪除字符串的所有尾隨空格。
31
split(str=
根據分隔符str
(空格,如果沒有提供)拆分字符串並返回子字符串列表; 如果給定,最多分割爲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()
返回字符串的標題版本,即所有單詞第一個字母都以大寫開頭,其餘的都是小寫的。
37
translate(table, deletechars=
根據轉換表STR(256個字符),除去那些在del
字符串轉換字符串。
38
upper()
將字符串中的小寫字母轉換爲大寫。
39
zfill(width)
返回原始字符串,左邊填充爲零,總共有寬度(width
)字符; 對於數字zfill()
保留給定的任何符號(少於一個零)。
40
isdecimal()
如果unicode字符串只包含十進制字符,則返回true
,否則返回false
。