各位童鞋很抱歉,由于這段時(shí)間比較忙,好久沒更新了。今天終于有空來(lái)繼續(xù)跟各位童鞋一起學(xué)習(xí)python。
之前講到,字符串的定義就是把一些字符序列用引號(hào)引起來(lái)。例如:
s = 'abc'
上面這行代碼的執(zhí)行過(guò)程:先創(chuàng)建一個(gè)字符串對(duì)象,并初始化里面字符串的值為'a', 'b', 'c'的序列,再把指針s指向這個(gè)對(duì)象。如下圖所示:
字符串的序列操作
我們知道字符串內(nèi)部是一個(gè)字符序列。作為序列,我們可以用下標(biāo)來(lái)索引。例如:
c = s[0] # c = 'a'
c = s[1] # c = 'b'
還可以從字符序列的末尾開始索引,-1代表最后一個(gè)字符,-2代表倒數(shù)第二個(gè)字符,... 例如:
c = s[-1] # c = 'c'
c = s[-2] # c = 'b'
另外字符串還支持切片(slice)操作,取出給定兩個(gè)下標(biāo)之間的字符序列(包括開始下標(biāo)的字符,但不包括結(jié)束下標(biāo)的字符。用數(shù)學(xué)區(qū)間的[a:b)來(lái)描述是不是更清楚點(diǎn)呢)。例如:
c = s[0:2] # c = 'ab'
c = s[1:2] # c = 'b'
c = s[1:-1] # c = 'b'
這一點(diǎn)很像verilog的位寬操作,例如:reg s[7:0] = 8'h5a,那我們可以c = s[3:0]來(lái)取出3到0位的4'ha。只是verilog是閉區(qū)間的。
在切片時(shí),當(dāng)開始下標(biāo)是0,冒號(hào)前的下標(biāo)可以省略;結(jié)束下標(biāo)指向最后一個(gè)元素,冒號(hào)后的下標(biāo)也可省略。所以上面的切片可以簡(jiǎn)化成:
c = s[:2] # c = 'ab'
c = s[1:] # c = 'bc'
當(dāng)開始下標(biāo)和結(jié)束下標(biāo)都省略時(shí),s[:]表示整個(gè)字符序列'abc'。
注意理解 s[1:-1]和s[1:]的區(qū)別,前者不包括最后一個(gè)字符,而后者包括。
作為字符序列,還支持拼接和重復(fù)操作。例如:
s1 = 'abc'
s2 = s1 + 'def' # s2 = 'abcdef'
s3 = s1 * 3 # s3 = 'abcabcabc'
另外我們要注意字符序列的只讀性。我們不可以對(duì)字符賦值,s[0] = 'd'是非法的。但我們可以迂回:
s = 'abc'
s = 'd' + s[1:]
但要注意,第二句并不是簡(jiǎn)單的修改s對(duì)象的元素值,而是用拼接產(chǎn)生了一個(gè)全新對(duì)象,并讓s指向新的對(duì)象。
字符串類型的操作
除了序列操作外,字符串本身作為一種類,自帶了很多操作函數(shù)(類的方法)。下表列出了一些常用的操作:
index, find
position = index(substr, begin=0, end=len(string))
position = find(substr, begin=0, end=len(string))
描述:index和find函數(shù)的作用相同,都是查找子字符串??梢灾付ㄩ_始和結(jié)束索引,在一個(gè)范圍內(nèi)查找。
返回值:子字符串的起始索引值。index和find的區(qū)別是,當(dāng)沒有找到子字符串時(shí),index報(bào)錯(cuò),而find返回-1。
例如:
s = 'abcdefdef'
p1 = s.find('de') # p1 = 3
p2 = s.index('de', 5) # p2 = 6
replace
str_new = replace(substr_old, substr_new[, max])
描述:替換函數(shù),如其名,查找子字符串substr_old,替換成substr_new。第三個(gè)參數(shù)是可選的,指定替換的最大次數(shù),默認(rèn)是全部替換。
返回值:返回替換后的新字符串。
例如:
s = 'abcdefdef'
s1 = s.place('de', 'gh') # s1 = 'abchgfhgf'
s2 = s.place('de', 'gh',1) # s1 = 'abchgfedf'
split
list = split(str=' ', num)
描述:split函數(shù)用分隔字符str把字符串拆分成若干個(gè)子字符串。num指定拆分多少次,若沒有指定次數(shù),則為全部拆分。
返回值:拆分后的子字符串列表(下一次我們將要學(xué)習(xí)列表)。
例如:
s = 'I am learning python'
list1 = s.split(' ') # list1 = ['I', 'am', 'learning', 'python']
list1 = s.split(' ', 2) # list1 = ['I', 'am', 'learning python']
upper, lower
str_new = upper()
str_new = lower()
描述:把字符串轉(zhuǎn)成大寫或小寫。
返回值:大小寫轉(zhuǎn)換后的新字符串。
例如:
s = 'abc'
s1 = s.uppper() # s1 = 'ABC'
s2 = s1.lower() # s2 = 'abc'
strip, lstrip, rstrip
str_new = strip(char=' ')
str_new = rstrip(char=' ')
str_new = lstrip(char=' ')
描述:strip函數(shù)用來(lái)去除頭或尾部的指定字符,默認(rèn)是去掉空格。
返回值:返回處理后的新字符串。
例如:
s = ' abc'
s1 = s.lstrip() # s1 = 'abc'
s2 = s1.rstrip('') # s2 = 'abc'
startswith, endswith
boolean = startswith(str, begin=0, end=len(string))
boolean = endswith(str, begin=0, end=len(string))
描述:檢查字符串是否以str開頭或結(jié)尾,可以在指定范圍內(nèi)檢查。
返回值:如果檢查到,返回True,否則返回False。
例如:
s = 'clk_a'
b1 = s.startswith('clk') # b1 = True
s = 'rst_n'
b2 = s.endswith('_n') # s2 = True
format
str_new = '{}{}...'.format(arg1, arg2, ...)
描述:format用來(lái)把其它數(shù)字、字符串、甚至對(duì)象等格式化成字符串。大括號(hào){}用來(lái)指定名稱、位置、數(shù)字的格式等。
返回值:格式化后的新字符串。
例如:
s = 'I am learning {lang}'.format(lang='python') # s = 'I am learning python'
s = '{0} {1} {0}'.format('face', 'to') # s = 'face to face'
s = '{} {} {}'.format('I', 'love', 'python') # s = 'I love python'
第一種,按名稱替換。
第二種,按位置替換。
第三種,默認(rèn)按位置替換,也是最常見的替換方式。
是不是有點(diǎn)像verilog的模塊例化?可以按名稱,也可以按位置。
format數(shù)字格式化
數(shù)字格式化成字符串的規(guī)則如下表:
例如:
s = "8'h{:0>2x}".format(15) # s = "8'h0f"
s = '{:.2%}'.format(3 / 9) # s = "33.33%"
可能有童鞋要問(wèn)了“字符串內(nèi)置這么多函數(shù),一下也記不住???” 所以下面內(nèi)容非常重要(敲黑板)。
1. 怎么看string還內(nèi)置其它什么函數(shù)?
s = 'abc'
print(dir(s))
dir()是一個(gè)內(nèi)置函數(shù),能夠查看類的所有屬性和方法。結(jié)果如下:
2. 那怎么查看具體函數(shù)的使用方法呢?
python已經(jīng)考慮到這個(gè)問(wèn)題了,不需要百度、不需要查看源代碼,只需要調(diào)用help()函數(shù)。例如:
print(help(s.find))
將打印出下面的內(nèi)容:
有沒有被python的貼心功能感動(dòng)呢?
下一次我們將學(xué)習(xí)python的列表。
-
字符串
+關(guān)注
關(guān)注
1文章
579瀏覽量
20519 -
數(shù)據(jù)類型
+關(guān)注
關(guān)注
0文章
236瀏覽量
13624 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84694
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論