1、類型
字符串是不可變的對象。(可變的是重新拼接組成的新的字符串)
一個個字符組成的有序的序列,是字符的集合。
使用單雙號、雙引號、三引號引住的字符序列。描述字符串,沒有放字符的為空字符串,長度為0,等同於None。
Python3中字符串就是unicode----8類型的。
生成新的值。Utf-8。
2、字符串定義初始化
s2="string" s3='''this is a"string"''' s5='c:\windows\nt’ 打印帶出斜杠的。
3、字符串元素訪問-----下標
1)字符串支持使用索引訪問。 sql[3].
4、join
把可迭代對象的一個個字符串連接起來。
可迭代對象本身元素都是字符串。 “string”.join(iterbale)->str
返回一個新的字符串。 '---'.join(map(str,lst))
5、map
map(str.lst)轉換為字符串的方式。按照什么格式拼接字符串。
6、字符串+連接
1) + -》str。將兩個字符串拼接在一起,返回一個新的字符串。‘a’*2
7、字符串的分割。
分為兩類。
1)Split() 沒有指定,盡可能多的空白字符作為一個空白分隔符。’’+
Split(sep=none,maxsplit=1)。不指定分隔符的時候,默認以空白字符進行分割。
"a b\tc".split() 從左至右
p sep 指定分割字符串,缺省的情況下空白字符串作為分隔符
p maxsplit 指定分割的次數,-1 表示遍歷整個字符串.
切的函數都是一刀兩斷。 "a,b,c,d,e".split(',',2) 不支持正則表達式。
2)rsplit(sep=None, maxsplit=-1) -> list of strings
*從右向左
*sep 指定分割字符串,缺省的情況下空白字符串作為分隔符
* maxsplit 指定分割的次數,-1 表示遍歷整個字符串.
3)splitlines([keepends]) -> list of strings
* 按照行來切分字符串
* keepends 指的是是否保留行分隔符
* 行分隔符包括\n、\r\n、\r等
()括號里面的添加True,切割后顯示分隔符。False不顯示分隔符。
4) Partition(seq)->(head,seq,tail)切割。切割完成后返回的是三元組。
從左至右,遇到分隔符就把分隔符分割成兩部分,返回頭、分隔符、尾三部分的三元組。如果沒找到分隔符,就返回頭,2個空元素的三元組。
Seq必須界定分隔符,必須制定。
5)rpartition(seq)->(head,seq,tail),從右至左,到分隔符就把分隔符分割成兩部分,返回頭、分隔符、尾三部分的三元組。如果沒找到分隔符,就返回頭,2個空元素的三元組。
8、字符串大小寫
1)upper全是大寫。 lower全是小寫。 swapcase()交互式大小寫。if a.lower()='abc':
9、字符串排版
title() 標題的每個字母首字母都大寫。
capitalize()首個單詞大寫。
center(width[,fillchar]) ->str width打印的寬度,,,fillchar填充的字符。
zfill(didth) width打印寬度,居右。
10、字符串修改
1)replace(old,new[,count])---->str**
字符串中查找到匹配替換為新字串,返回新的字符串。
count表示替換幾次,不指定就是全部替換。
2)Strip([chars])->str
把兩頭的符合要求的字符串全部去掉。char作為集合,去掉字符集。
如果char沒有指定字符,那么就去掉兩頭的空白字符。
s='very very very good'.....s.strip(' very')
lstrip([chars]) -> str
從左開始
rstrip([chars]) -> str
從右開始
11、find();
找得到返回的是索引,未找到返回的是-1.
find(sub[, start[, end]]) -> int s.find('very')
在指定的區間[start, end),從左至右,查找子串sub。找到返回索引,沒找到返回-1
rfind(sub[, start[, end]]) -> int
在指定的區間[start, end),從右至左,查找子串sub。找到返回索引,沒找到返回-1
12、字符串查找
index(sub[, start[, end]]) -> int
在指定的區間[start, end),從左至右,查找子串sub。找到返回索引,沒找到拋出異常ValueError
rindex(sub[, start[, end]]) -> int
在指定的區間[start, end),從左至右,查找子串sub。找到返回索引,沒找到拋出異常ValueError
13、字符串查找
1)時間復雜度,index和count方法都是O(n)。
2)隨着列表數據規模的增大,而效率下降。
3)len(string)返回字符串的長度,即字符串的個數。
14、count(sub[, start[, end]]) -> int
在指定的區間[start, end),從左至右,統計子串sub出現的次數。。。s.count('very')
4)count(sub[])->int.
15、字符串判斷:
endswith(suffix[, start[, end]]) -> bool
在指定的區間[start, end),字符串是否是suffix結尾
startswith(prefix[, start[, end]]) -> bool
在指定的區間[start, end),字符串是否是prefix開頭
16、字符串判斷 is系列
isalnum() -> bool 是否是字母和數字組成 "abc123".isalnum()
isalpha() 是否是字母
isdecimal() 是否只包含十進制數字
isdigit() 是否全部數字(0~9)
isidentifier() 是不是字母和下划線開頭,其他都是字母、數字、下划線
islower() 是否都是小寫
isupper() 是否全部大寫
isspace() 是否只包含空白字符 返回的都是bool值。
Sections(有序的)(常見的面試是排序方法是冒泡法)。
17、字符串格式化
字符串格式化是一種拼接字符串輸出樣式的手段,更靈活方便。
1) join拼接只能使用 分隔符,且要求被拼接的是可迭代的對象。
2) +拼接字符串比較方便,但是字符串需要先轉換為字符串才能拼接。
printf-style formatting,是來自於c語言風格的print輸出。
3)格式要求:占位符。。使用%和格式字符組成,例如%s,%d。
S調用str, r調用repr().所有對象都可以被這兩個轉換。‘a’使用ascii。%
占位符中還可以插入修飾字符,例如%03d表示打印3個位置。不夠前面補0.
format % values.格式字符串和被格式化的值之間使用%分隔。
Values只能是一個對象,或者是一個和格式字符串數目相等的元組,或一個字典。
用法:"i am %01s" %(3,)
'i like %s.'%'Python'
4)'%3.2f%% , 0x%x, 0X%02X' % (89.7654, 10, 15)
可以是 元組,可以是字典。
0x 0X只是提示符。
18、字符串格式化
format函數格式。
“{}{***}”。format(args,kwargs)。
Args是位置參數,是一個元組。
Kwargs關鍵字參數,是一個個字典。 {}花括號代表占位符。{{}}表示打印花括號。
{}表示按照順序匹配位置參數,{n}標示取位置參數索引為n的值。
{****}表示在關鍵字參數中搜索名稱一致的。
19、字符串格式化
p 位置參數
"{}:{}".format('192.168.1.100',8888),這就是按照位置順序用位置參數替換前面的格式字符串的占位符中
p 關鍵字參數或命名參數
"{server} {1}:{0}".format(8888, '192.168.1.100', server='Web Server Info : ') ,位置參數按照序號匹配,
關鍵字參數按照名詞匹配
p 訪問元素
"{0[0]}.{0[1]}".format(('magedu','com'))
p 對象屬性訪問
from collections import namedtuple
Point = namedtuple('Point','x y')
p = Point(4,5)
"{{{0.x},{0.y}}}".format(p)
2) "{:^10x}".format(97)居中對齊。'{0}*{1}={2:<2}'.format(3,2,2*3)
3) 進制。"int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42)
41 1
61 a 97
權重。
顯示時間的。
有效數字。。()
20、bytes、bytearray
字符串是字符組成的有序序列,字符可以使用編碼來理解。
1)bytes是不可變的字節,是字節組成的有序的不可變序列。
2)bytearray 是可變的字節,是字節組成的有序的可變序列。
3)編碼與解碼
字符串按照不同的字符集編碼encode返回字節序列bytes。
encode(encoding=’utf-8’ ,errors=’strict’)->bytes
b'abcdef'.replace(b'f',b'k')
字節序列按照不同的字符集解碼decode返回字符串
bytes.decode(encoding="utf-8", errors="strict") -> str
4) bytes定義
Bytes() 空的bytes。 Bytes(int)指定字節的bytes,被0填充。
Bytes(iterable_of_ints)->[0,255]的internet組成的可迭代的對象。
Bytes(string,encoding[,errors])->bytes等價於string。Encode()
Bytes(bytes_or_buffer)->immutable cpoy of bytes_or_buffer從一個字節序列或者buffer復制出一個新的不可變的bytes對象。
使用b前綴定義:
只允許基本ASCII使用字符形式b’abc9’
使用16進制表示b“、x41、x61”
5)ASCII表。ASCII(American StandardCode for InformationInterchange,美國信息交換
標准代碼)是基於拉丁字母的一套單字節編碼系統
6) bytes操作
和str類型類似,都是不可變類型,所以方法都一樣,只不過bytes輸入是bytes,輸出也是bytes。
類方法bytes。Formhex(string)
String必須是2個字符的16進制的形式,bytes.fromhex('6161 09 6a 6b00')
Hex()返回十六進制的字符串。
'abc'.encode().hex()
索引 b‘abcdef’[2]
7) bytearray定義
定義:bytearray()空的bytearray
Bytearray(int)指的是字節的bytearray,被0填充。
Bytearray(iterable_of_ints)->bytearray[0,255]的int組成的可迭代對象。
Bytearray(string,encoding[,errors])->bytearry近似string。Encode()不過返回可變對象,
Bytearray(bytes_or_buffer)從一個字節序列或者buffer復制出一個新的改變的對象。
B前綴的定義的類型是bytes類型。
8) byearray操作
和bytes類型方法相同。
Bytearray(b’abcdef’).replace(b’f’,b’k’)
Bytearray(b’abc’).find(b’b’)
類方法bytearray.formhex(string)
String必須是2個字符的16進制的形式。
Bytearray。Formhex(‘6162 09 60 6b00’)
hex()
返回16進制表示的字符串。
Bytearray(‘abc’.enconde())。Hex()
索引
Bytearray(b’abcdef’)[2]返回該字節對應的數,int類型。
9) bytearray操作。
Append(int)尾部追加一個元素。
Insert(index,int)在指定索引位置插入元素。
Extend(iterable_of_ints)將一個可迭代對象的整數集合追加到當前bytearray
Pop(index=-1)在指定索引上移除元素,默認從尾部移除。
Remove(value)找到第一個value移除,找不到拋出異常。
Clear()清空
Reverse()翻轉bytearray,就地修改。
10)提到字符串就得有編碼的概念。
11)字節
12)字節0-255之間。
13)可以索引的數據結構,列表,tuple str bytearray.
21、切片
1)線性結構。
可迭代。。。for。。。In。。
len()可以獲取長度。
通過下標可以訪問。可以切片。
2)學過的線性結構:
列表、元組、字符串、bytes bytearray.
3)切片:
通過索引區間訪問線性結構的一段數據。
Sequnence[start:stop]表示返回[start,stop]區間的字序列。
支持負索引。
Start為0,可以省略
Stop為末尾,可以省略。
超過上界(右邊界),就取到末尾;超過下界(左邊界),取到開頭。
Start一定要在stop的左邊。
[:]...表示從頭至尾,全部元素被取出,等效於copy()方法。
生產新的拷貝。
練習方法:'www.magedu.com'[:10] ----'www.magedu'
bytearray(b'www.magedu.com')[-4:10] --- bytearray(b'')
'www.magedu.com'[:] -------'www.magedu.com'
tuple('www.magedu.com')[-10:10] -------('m', 'a', 'g', 'e', 'd', 'u')
list('www.magedu.com')[-10:-4] ------- ['m', 'a', 'g', 'e', 'd', 'u']
4) 切片
步長切片
[start:stop:step]
Step為步長,可以正負整數,默認是1;
Step要和start;stop同向,否則返回空序列。
練的例題:'www.magedu.com'[4:10:2]
'mgd'
list('www.magedu.com')[-4:-10:-2]
['.', 'd', 'g']