在學習字串的過程中,我們在前面講了很多使用方法,實際上在使用的過程中,我們經常需要將字串格式化,透過格式化輸出我們需要的結果。
格式化字串就是在先創建一個空間,然後再這個空間留幾個位置,然後根據需求填入對應的內容,這裡留出的位置相當於佔位符,格式化字串有兩種方式。一種是使用%操作符,一種是使用format()方法。
%運算子在我們格式化字串的時候十分方便,它的語法結構如下:
'%[+][-][0][.m]格式化字元'%iteration
1) iteration為我們要填入的內容,第一個%後面為我們要選擇的格式。
2)[+]為右對齊'+'為我們可以填入的參數,數字大小代表對齊寬度。
3)[-]為左對齊'-'為我們可以填入的參數,數字大小代表對齊寬度。
4)[.m]中的m為可選精度,表示保留小數點後幾位小數。
5)格式化字元為我們需要選定的格式,它的常用類型為字串%s、十進制整數%d、單字元%c、浮點數%f、十六進制數%x、八進制數%o 、字元%%。
關於%操作符的理解可能比較抽象,我們透過例子來了解它。我們比較常用的就是輸出一個浮點數,小數點後面保留2位小數,程式碼如下:
>>>my_str=66666.66666>>>print('保留2位小數格式為:%.2f'%my_str)保留2位小數格式為:66666.67
保留小數的時候會自動進行四捨五入操作,在使用的時候主要注意它的形式,我們可以選擇一個或多個組合在一起來格式化字串,上面是我們使用了一種格式化操作,格式化部分為'%.2f',然後再字串的最後用%連接對應字串即直接等同於對應內容。
我們再介紹一下對齊方式的使用:
>>>foriinrange(5):...print('%-5d'%i,end='')#左對齊方式...print('%5d'%i)#右對齊方式...0011223344
5是程式碼對齊的寬度,我們採用左右對齊,第一列為左對齊,寬度為5,然後不換行再次輸出i,第二次輸出為右對齊,因此輸出入上所示。
關於%操作符就將到這裡,大家在下面自己進行練習可以更快的去掌握這些知識。
format()方法提供了更多的方法去格式化字串,它的基本語法是透過'{}'和':'來取代'%'。它的語法格式為:
str.format()
我們透過例子來看一下:
namea='小明'nameb='小華'print('{}是{}的好朋友'.format(namea,nameb))
這個例子是最簡單的使用方式,但是既然這個方法是後來引入的方法,那麼它一定有它比較好用的地方,下面我們介紹一下它的具體方法。
在佔位符裡結構可以為:
{[index[:[fill]align][width][#][.k][type]]}
透過圖來看一下這個結構:
在上面那個例子中只包含了簡單的'{}',如果我們加以修飾的話可以使用上面的這些結構,我們來一一說明:
1) index為索引位置,我們可以給他一個數字,用來指定物件在列表中的索引位置,索引值從0開始,如果沒有索引值,按從左到右的順序。像上面的例子,我們如果加了索引值:
namea='小明'nameb='小華'print('{1}是{0}的好朋友'.format(namea,nameb))
那麼他們的位置就進行了一個調換。
2)':'為後續內容使用的前提,使用後面操作的時候都要加一個':'。
3) fill可以選擇一個參數作為空白填充的字元數。
4) width是可以選擇一個參數來指定長度。
5) align可以選擇一個參數作為對齊方式,參數為'>'代表右對齊,'<'為左對齊,'='為右對齊,但是符號放在最左側,'^'代表居中,這些需要搭配width使用。
我們來看個例子:
>>>my_str='dotcpp'>>>print('{:@>10}'.format(my_str))@@@@dotcpp
這個例子裡我們選擇了右對齊,然後寬度為10,空白字元用符號@取代。
6)'#'為進位前綴。
7).k中的k是可選參數,用來表示小數點後保留的數字。
8) type可選擇參數來指定型別,常用的有S來表示字串、D來表示十進位整數、%來表示百分比、f或F表示浮點數。
下面我們在透過一個例子來使用一下上述這些方法。
my_str='dotcpp'#先定義兩個字串my_string=123456.654321print('my_str:{1:!^20s}nmystring:{0:$^20.2f}'.format(my_string,my_str))
輸出為:
my_str:!!!!!!!dotcpp!!!!!!!mystring:$$$$$123456.65$$$$$$
對於my_str,'1'為它的索引位置,'!'來替代空白字符,'^'代表位置居中,20為寬度,'s'為字串類型。
對於my_string,'0'位它的索引位置,'$'來代替空包字符,'^'代表位置居中,20位寬度,'.2'為小數點後保留2位小數,'f'為浮點類型。
關於字串就講到這裡,字串的使用是十分頻繁的,所以大家一定要透過習題去練習並掌握它。