標籤:
1.基本操作
序列操作:索引,分區,乘法,判斷成員資格,長度,最值......
註:字串不可變,分區賦值不合法
2.字串格式化
模板
格式化字串時,Python使用一個字串作為模板。模板中有格式符,這些格式符為真實值預留位置,並說明真實數值應該呈現的格式。Python用一個tuple將多個值傳遞給模板,每個值對應一個格式符。
print("I‘m %s. I‘m %d year old" % (‘Vamei‘, 99))
"I‘m %s. I‘m %d year old" 為我們的模板。%s為第一個格式符,表示一個字串。%d為第二個格式符,表示一個整數。(‘Vamei‘, 99)的兩個元素‘Vamei‘和99為替換%s和%d的真實值。
在模板和tuple之間,有一個%號分隔,它代表了格式化操作。
整個"I‘m %s. I‘m %d year old" % (‘Vamei‘, 99) 實際上構成一個字串運算式。我們可以像一個正常的字串那樣,將它賦值給某個變數。比如:
a = "I‘m %s. I‘m %d year old" % (‘Vamei‘, 99)print(a)
我們還可以用詞典來傳遞真實值。如下:
print("I‘m %(name)s. I‘m %(age)d year old" % {‘name‘:‘Vamei‘, ‘age‘:99})
可以看到,我們對兩個格式符進行了命名。命名使用()括起來。每個命名對應詞典的一個key。
格式符
格式符為真實值預留位置,並控制顯示的格式。格式符可以包含有一個類型碼,用以控制顯示的類型,如下:
%s 字串 (採用str()的顯示)
%r 字串 (採用repr()的顯示)
%c 單個字元
%b 二進位整數
%d 十進位整數
%i 十進位整數
%o 八進位整數
%x 十六進位整數
%e 指數 (基底寫為e)
%E 指數 (基底寫為E)
%f 浮點數
%F 浮點數,與上相同
%g 指數(e)或浮點數 (根據顯示長度)
%G 指數(E)或浮點數 (根據顯示長度)
%% 字元"%"
可以用如下的方式,對格式進行進一步的控制:
%[(name)][flags][width].[precision]typecode
(name)為命名
flags可以有+,-,‘ ‘或0。+表示靠右對齊。-表示靠左對齊。‘ ‘為一個空格,表示在正數的左側填充一個空格,從而與負數對齊。0表示使用0填充。
width表示顯示寬度
precision表示小數點後精度
print("%+10x" % 10)print("%04d" % 5)print("%6.3f" % 2.3)
上面的width, precision為兩個整數。我們可以利用*,來動態代入這兩個量。比如:
print("%.*f" % (4, 1.2))
Python實際上用4來替換*。所以實際的模板為"%.4f"。
3.字串方法
(1)、find
find方法可以在一個較長的字串中尋找子字串。它返回子串所在位置的最左端索引。如果沒有找到則返回-1。
(2)、join
文法: ‘sep‘.join(seq)
參數說明:
以sep作為分隔字元,將seq所有的元素合并成一個新的字串
sep:分隔字元。可以為空白
seq:要串連的元素序列、字串、元組、字典
傳回值:返回一個以分隔字元sep串連各個元素後產生的字串
join方法是非常重要的字串方法,它是split方法的逆方法,用來在隊列中添加元素:
注意:需要添加的隊列元素都必須是字串。
>>> s = [‘1‘, ‘2‘, ‘3‘]
>>> ‘+‘.join(s)
‘1+2+3‘
(3)、lower
lower方法返回字串的小寫字母片。
(4)、replace
stringObj.replace(rgExp, replaceText)
replace方法返回某個字串的所有匹配項均被替換之後得到的字串。
>>> ‘This is a test‘.replace(‘is‘, ‘eez‘)
‘Theez eez a test‘
(5)、split
這是個非常重要的字串方法,它是join的逆方法,用來將字串分割成序列。
>>> ‘1+2+3+4‘.split(‘+‘)
[‘1‘, ‘2‘, ‘3‘, ‘4‘]
>>> ‘1 2 3 4‘.split()
[‘1‘, ‘2‘, ‘3‘, ‘4‘]
如果不提供任何分隔字元,程式會把所有空格作為分隔字元(空格、製表、換行等)。
(6)、strip
函數原型
聲明:s為字串,rm為要刪除的字元序列
s.strip(rm) 刪除s字串中開頭、結尾處,位於 rm刪除序列的字元
s.lstrip(rm) 刪除s字串中開頭處,位於 rm刪除序列的字元
s.rstrip(rm) 刪除s字串中結尾處,位於 rm刪除序列的字元
注意:
1). 當rm為空白時,預設刪除空白符(包括‘\n‘, ‘\r‘, ‘\t‘, ‘ ‘)
>>> a = ‘ 123‘
>>> a.strip()
‘123‘
>>> a=‘\t\tabc‘
‘abc‘
>>> a = ‘sdff\r\n‘
>>> a.strip()
‘sdff‘
2).這裡的rm刪除序列是只要邊(開頭或結尾)上的字元在刪除序列內,就刪除掉。
>>> a = ‘123abc‘
>>> a.strip(‘21‘)
‘3abc‘ 結果是一樣的
>>> a.strip(‘12‘)
‘3abc‘
(7)、translate
translate方法和replace方法一樣,可以替換字串中的某些部分,但是和前者不同的是,translate方法只處理單個字元。它的優勢在於可以同時進行多個替換,有些時候比replace效率高得多。
在使用translate轉換前,需要先完成一張轉換表。轉換表中是以某字元替換某字元的對應關係。因為這個表(事實上是字串)有多達256個項目,我們還是不要自己寫了,用string模組裡面的maketrans函數就行了。
maketrans函數接收兩個參數:兩個等長的字串,表示第一個字串中的每個字元都用第二個字串中相同位置的字元替換。
>>> from string import maketrans
>>> table = maketrans(‘cs‘, ‘kz‘)
建立這個表後,可以將它用作translate方法的參數,進行字串的轉換:
>>> ‘this is an incredible test‘.translate(table)
‘thiz iz an inkredible tezt‘
translate的第二個參數是可選的,這個參數是用來指定需要刪除的字元。
>>> ‘this is an incredible test‘.translate(table, ‘ ‘)
‘thizizaninkredibletezt‘
python基礎教程總結2——字串