python 3 字串總結
Python 3字串總結
一 概要
字串是一種有序的字元集合,用於表示文字資料。字串的字元可以是ASCII字元,各種符號以及各種Unicode字元。嚴格意義上,字串屬於不可變序列,意味著不能直接修改字串(即不能原處修改)。字串中的字元按照從左到右的順序,具體位置順序,支援索引,分片等操作。
二 字串常量
Python中字串常量可以用下列多種方式表示。
- 單引號: 'a'、'123'、'abc'。
- 雙引號: "a"、"123"、"abc"。
- 三個單引號或三個雙引號:'''Python code'''、"""Python string""",可以表示多行字元。
- 帶r或R字首的Raw字串:r'abc\n123'、R'abc\n123'。
- 帶u或U字首的Unicode字串:u'asdf'、U'asdf'。
字串都是str型別的物件,可用內建的str函式來建立str字串物件。列如:
>>> x=str(123) #用數字建立字串物件
>>> print(x)
123
>>> type(x) #測試字串物件型別
<class 'str'>
>>> x=str(u'abc12') #用字串常量建立字串物件 >>> x 'abc12'
1.單引號與雙引號
在表示字串常量時,單引號和雙引號沒有區別。在單引號字串中可嵌入雙引號,在雙引號字串中可嵌入單引號,但不能在雙引號中嵌入雙引號,單引號中嵌入單引號。例如:
>>> '123"abc' '123"abc' >>> "123'abc" "123'abc" >>> print('123"abc',"123'abc") 123"abc 123'abc >>> "123"abc" File "<stdin>", line 1 "123"abc" ^ SyntaxError: invalid syntax >>> '123'abc' File "<stdin>", line 1 '123'abc' ^ SyntaxError: invalid syntax
在互動模式下,直接顯示字串時,預設用單引號顯示。如果字串中有單引號,則用雙引號表示。注意,單引號或雙引號不會在列印時顯示。
2.三引號
三引號通常用於表示多行字串(也稱塊字元)。例如:
>>> x="""This is
... a Python
... example"""
>>> x
'This is\na Python\nexample'
>>> print(x)
This is
a Python
example
三引號一般會用於作為文件註釋,在執行時被忽略。
3.轉義字元
轉義字元 | 說明 |
\\ | 反斜線 |
\' | 單引號 |
\" | 雙引號 |
\a | 響鈴符 |
\b | 退格符 |
\f | 換頁符 |
\n | 換行符 |
\r | 回車符 |
\t | 水平製表符 |
\v | 垂直製表符 |
\0 | Null,空字串 |
三 字串的基本操作
字串基本操作包括求字串長度、包含性判斷、連線、迭代、索引和分片以及轉換
1.求字串長度
字串長度指字串中包含的字元個數,可用len函式獲得字串長度。例如:
>>> len('abcdefg')
7
2.包含性判斷
字串為字元的有序集合,所以可用in操作符判斷字串包含關係。例如:
>>> x='abcdefg'
>>> 'a' in x
True
>>> 'q' in x
False
3.字串的連線
字串的連線是把多個字串按順序合併成一個新的字串。例如:
>>> '12'+'34'+'56'
'123456'
>>> '12'*3
'121212'
4.字串的迭代
可用for迴圈迭代處理字串。例如:
>>> for a in 'abc':print(a)
...
a
b
c
5.索引和分片
字串作為一個有序集合,其中的每個字元可以通過偏移量來進行索引或分片。
索引是通過偏移量來獲得字串中的單個字元。跟JAVA中的陣列中獲取陣列中的元素型別。例如:
>>> x='abcdefg'
>>> x[0]
'a'
>>> x[-1]
'g'
>>> x[3]
'd'
索引可獲得指定位置的單個字元,但不能通過索引來修改字串。因為字串物件不允許被修改
分片是利用範圍從字串中連續獲得多個字元。分片的基本操作:
x [start:end]
表示返回變數x引用的字串中從偏移量start開始,到偏移量end之間(
不包含偏移量end對應的字元)的子字串。start和end引數均可省略,start預設是0,end預設為字串長度。例如:
>>> x='abcdefg'
>>> x[1:4] #返回偏移量為1到3的字元
'bcd'
>>> x[1:] #返回偏移量為1到末尾的字元
'bcdefg'
>>> x[:4] #返回字串開頭到偏移量為3的字元
'abcd'
>>> x[:-1] #除最後一個字元,其他字元全部返回
'abcdef'
>>> x[:] #返回全部字元
'abcdefg'
還可以增加一個步長引數來跳過中間的字元。例如:
x [start:end:step]
用這種分片時,會跳過中間的step個字元,step預設為1。例如:
>>> x='0123456789'
>>> x[1:7:2] #返回偏移量為1、3、5的字元
'135'
>>> x[::2] #返回偏移量為偶數的全部字元
'02468'
>>> x[7:1:-2] #返回偏移量為7、5、3的字元
'753'
>>> x[::-1] #將字元反序返回
'9876543210'
可以看到,步長為負數時,返回的字元與原來的順序相反。
6.字串轉換
可用str函式將數字轉換成字串。例如:
>>> str(123)
'123'
>>> str(1.23)
'1.23'
四.字串方法
字串作為str型別物件,Python提供了一系列方法用於字串處理
1.capitalize()
將字串第一個字母大寫,其餘字母小寫,返回新的字串。例如:
>>> 'this is Python'.capitalize()
'This is python'
2.count(sub[,start[,end]])
返回子字串sub在字串x的[start,end]範圍內出現的次數,省略範圍時查詢整個字串。例如:
>>> 'abcabcabc'.count('ab') #在整個字串中統計ab出現的次數
3
>>> 'abcabcabc'.count('ab',2) #從第3個字元開始到字串末尾統計ab出現的次數
2
3.endswith(sub[,start[,end]])
判斷[start,end]範圍內的子字串是否以sub字串結尾。例如:
>>> 'abcabcabc'.endswith('bc')
True
>>> 'abcabcabc'.endswith('b')
False
4.startswith(sub[,start[,end]])
判斷[start,end]範圍內的子字串是否以sub字串開頭。例如:
>>> 'abcd'.startswith('ab')
True
>>> 'abcd'.startswith('b')
False
5.expandtabs(tabsize=8)
將字串中的Tab字元替換為空格,引數預設為8,即一個Tab字元替換為8個空格。例如:
>>> x='12\t34\t56'
>>> x
'12\t34\t56'
>>> x.expandtabs() #預設每個Tab字元替換為8個空格
'12 34 56'
>>> x.expandtabs(0) #引數為0時刪除全部Tab字元
'123456'
>>> x.expandtabs(4) #每個Tab字元替換為4個空格
'12 34 56'
6.find(sub[,start[,end]])
在[start,end]範圍內查詢子字串sub,返回第一次出現位置的偏移量。沒有找到返回-1.例如:
>>> x='abcdabcd'
>>> x.find('ab')
0
>>> x.find('ab',2)
4
>>> x.find('ba')
-1
7.index(sub[,start[,end]])
與find()方法相同,只是在未找到子字串時產生ValueError異常。例如:
>>> x='abcdabcd'
>>> x.index('ab')
0
>>> x.index('ab',2)
4
>>> x.index('e')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
8.rfind(sub[,start[,end]])
在[start,end]範圍內查詢子字串sub,返回最後一次出現位置的偏移量。沒有找到時返回-1.例如:
>>> 'abcdabcd'.rfind('ab')
4
9.rindex(sub[,start[,end]])
與rfind()方法相同,只是在未找到子字串時產生ValueError異常。例如:
>>> 'abcdabcd'.rindex('ab')
4
10.format(args)
字串格式化,將字串中用{}定義的替換域依此用引數args替換。例如:
>>> 'My name is {0},age is {1}'.format('Tome',23)
'My name is Tome,age is 23'
11.format_map(map)
使用對映完成字串格式化。例如:
>>> 'My name is {name},age is {age}'.format_map({'name':'Tome','age':23})
'My name is Tome,age is 23'
12.isalnum()
字串由數字或字母組成時返回True,否則返回False。例如:
>>> '123'.isalnum()
True
13.isalpha()
字串中的字元全部是字母時返回True,否則返回False。例如:
>>> 'acv'.isalpha()
True
14.isdecimal()
字串中的字元全部是數字時返回True,否則返回Fasle。例如:
>>> '123'.isdecimal()
True
15.isdigit()
字串中的字元全部是數字時返回True,否則返回False。例如:
>>> '123'.isdigit()
True
16.isnumeric()
字串中的字元全部是數字時返回True,否則返回False。例如:
>>> '123'.isnumeric()
True
17.islower()
字串中的字母全部是小寫字母時返回True,否則返回False。例如:
>>> 'abc123'.islower()
True
18.isupper()
字串中的字母全部是大寫字母時返回True,否則返回False。例如:
>>> 'ABD123'.islower()
False
19.isspace()
字串中的字元全部是空格時返回True,否則返回False。例如:
>>> ' '.isspace()
True
20.ljust(width[,fillchar])
當字串長度小於width時,在字串末尾填充fillchar,使長度等於width。預設填充字元為空格。例如:
>>> 'adv'.ljust(8)
'adv '
21.rjust(width[,fillchar])
與ljust()方法類似,只是在字串開頭填充字元。例如:
>>> 'abc'.rjust(8)
' abc'
22.lower()
將字串中的字母全部轉換成小寫。例如:
>>> 'This is ABC'.lower()
'this is abc'
23.upper()
將字串中的字母全部轉換成大寫。例如:
>>> 'This is ABC'.upper()
'THIS IS ABC'
24.lstrip([chars])
未指定引數chars刪除字串開頭的空格、回車符以及換行符,否則刪除字串開頭包含在chars中的字元。例如:
>>> '\n\r abc'.lstrip()
'abc'
25.rstrip([chars])
未指定引數chars刪除字串末尾的空格、回車符以及換行符,否則刪除字串末尾包含在chars中的字元。例如:
>>> '\n abc \r\n'.rstrip()
'\n abc'
26.strip([chars])
未指定引數chars刪除字串首尾的空格,回車符以及換行符,否則刪除字串首尾包含著chars中的字元。例如:
>>> '\n \r abc \r\n'.strip()
'abc'
27.partition(sep)
將字串從sep第一次出現的位置分隔成三部分:sep之前、sep和sep之後,返回一個三元組。沒有找到sep時,返回字串本身和兩個空格組成的三元組。例如:
>>> 'abc123abc123abc123'.partition('12')
('abc', '12', '3abc123abc123')
28.rpartition(sep)
與partition()類似,只是在從字串末尾開始找第一個sep。例如:
>>> 'abc123abc123abc123'.rpartition('12')
('abc123abc123abc', '12', '3')
29.replace(old,new[,count])
從字串開頭,依次將包含的old字串替換為new字串,省略count時替換全部old字串。指定count時,替換次數不能大於count。例如:
>>> x='ab12'*4
>>> x
'ab12ab12ab12ab12'
>>> x.replace('12','000') #將12全部替換成000
'ab000ab000ab000ab000'
30.split([sep],[maxsplit])
將字串按照sep指定的分隔字串分解,然後返回分解後的列表。sep省略時,以空格為分隔符。maxsplit指定分解次數。例如:
>>> 'ab cd ef'.split()
['ab', 'cd', 'ef']
31.swapcase()
將字串中的字母大小寫互換。例如:
>>> 'adcDEF'.swapcase()
'ADCdef'
32.zfill(width)
如果字串長度小於width,則在字串開頭填充0,使長度等於width。如果第一個字元為加號或減號,則在加號或減號之後填充0.例如:
>>> 'abc'.zfill(8)
'00000abc'
>>> '+12'.zfill(8)
'+0000012'
五.字串格式化表示式
字串除了用format()方法進行格式化外,還可使用格式化表示式來處理字串。字串格式化表示式用%表示,%之前為需要進行格式化的字串,%之後為需要填入字串中的實際引數。例如:
>>> "The %s'sprice id %4.2f" %('apple',2.5)
"The apple'sprice id 2.50"
在字串"The %s's price id %4.2f"中,%s和%4.2f是格式控制符。引數表('apple',2.5)中的引數依次填入各個格式控制符。
Python的格式控制符如下表所示:
Python格式控制符
格式控制符 | 說明 |
s | 引數為字串或其他任何物件 |
r | 同s,但字串用repr表示式 |
c | 引數為單個字元或字元的ASCII碼 |
d | 引數轉換為十進位制整數 |
i | 引數轉換為十進位制整數 |
u | 引數轉換為十進位制整數 |
o | 引數轉換為八進位制整數 |
x | 引數轉換為十六進位制整數,字母小寫 |
X | 引數轉換為十六進位制整數,字母大寫 |
e、E | 按科學計數法格式轉換為浮點數 |
f、F | 按定點小數格式轉換浮點數 |
g、G | 按定點小數格式轉換為浮點數 |
使用時,格式控制符的基本結構如下。
%[name][flags][width[.precision]]格式控制符
其中:name為字典物件的鍵,flags為正負號+/-、左對齊-或0(補零標誌),width指定數字的寬度,precision指定數字的小數位數。