在學(xué)習(xí)字符串的過程中,我們在前面講了很多使用方法,實(shí)際在使用的過程中,我們經(jīng)常會(huì)需要將字符串格式化,通過格式化輸出我們需要的結(jié)果。
格式化字符串就是在先創(chuàng)建一個(gè)空間,然后再這個(gè)空間留幾個(gè)位置,然后根據(jù)需求填入相應(yīng)的內(nèi)容,這里留出的位置相當(dāng)于占位符,格式化字符串有兩種方式。一種是使用%操作符,一種是使用format()方法。
1. %操作符
%操作符在我們格式化字符串的時(shí)候十分方便,它的語法結(jié)構(gòu)如下:
‘%[+][-][0][.m]格式化字符’%iteration
1) iteration為我們要填入的內(nèi)容,第一個(gè)%后面為我們要選擇的格式。
2) [+]為右對齊‘+’為我們可以填入的參數(shù),數(shù)字大小代表對齊寬度。
3) [-]為左對齊‘-’為我們可以填入的參數(shù),數(shù)字大小代表對齊寬度。
4) [.m]中的m為可選精度,表示保留小數(shù)點(diǎn)后幾位小數(shù)。
5) 格式化字符為我們需要選定的格式,它的常用類型為字符串%s、十進(jìn)制整數(shù)%d、單字符%c、浮點(diǎn)數(shù)%f、十六進(jìn)制數(shù)%x、八進(jìn)制數(shù)%o、字符%%。
關(guān)于%操作符的理解可能比較抽象,我們通過例子來了解一下它。我們比較常用的就是輸出一個(gè)浮點(diǎn)數(shù),小數(shù)點(diǎn)后保留2位小數(shù),代碼如下:
>>> my_str =66666.66666 >>> print('保留2位小數(shù)格式為:%.2f'%my_str)保留2位小數(shù)格式為:66666.67
保留小數(shù)的時(shí)候會(huì)自動(dòng)進(jìn)行四舍五入操作,在使用的時(shí)候主要注意它的形式,我們可以選擇一個(gè)或多個(gè)組合在一起來格式化字符串,上面是我們使用了一種格式化操作,格式化部分為‘%.2f’,然后再字符串的最后用%連接相應(yīng)字符串即直接等同于相應(yīng)內(nèi)容。
我們再介紹一下對齊方式的使用:
>>> for i in range(5): ... print('%-5d'%i,end=' ')#左對齊方式 ... print('%5d'%i)#右對齊方式 ... 0 0 1 1 2 2 3 3 4 4
5是代碼對齊的寬度,我們采用左右對齊,第一列為左對齊,寬度為5,然后不換行再次輸出i,第二次輸出為右對齊,因此輸出入上所示。
關(guān)于%操作符就將到這里,大家在下面自己進(jìn)行練習(xí)可以更快的去掌握這些知識(shí)。
2. format()方法
format()方法提供了更多的方法去格式化字符串,它的基本語法是通過‘{}’和‘:’來代替‘%’。它的語法格式為:
str.format()
我們通過例子來看一下:
namea = '小明' nameb = '小華' print('{}是{}的好朋友'.format(namea,nameb))
這個(gè)例子是最簡單的使用方式,但是既然這個(gè)方法是后來引入的方法,那么它一定有它比較好用的地方,下面我們介紹一下它的具體方法。
在占位符里結(jié)構(gòu)可以為:
{[index[:[fill]align][width][#][.k][type]]}
通過圖來看一下這個(gè)結(jié)構(gòu):
在上面那個(gè)例子中只包含了簡單的‘{}’,如果我們加以修飾的話可以使用上面的這些結(jié)構(gòu),我們來一一說明:
1) index為索引位置,我們可以給他一個(gè)數(shù)字,用來指定對象在列表中的索引位置,索引值從0開始,如果沒有索引值,按從左到右的順序。像上面的例子,我們?nèi)绻恿怂饕担?/p>
namea = '小明' nameb = '小華' print('{1}是{0}的好朋友'.format(namea,nameb))
那么他們的位置就進(jìn)行了一個(gè)調(diào)換。
2) ‘:’為后續(xù)內(nèi)容使用的前提,使用后面操作的時(shí)候都要加一個(gè)‘:’。
3) fill可以選擇一個(gè)參數(shù)作為空白填充的字符數(shù)。
4) width是可以選擇一個(gè)參數(shù)來指定長度。
5) align可以選擇一個(gè)參數(shù)作為對齊方式,參數(shù)為‘>’代表右對齊,‘<’為左對齊,‘=’為右對齊,但是符號(hào)放在最左側(cè),‘^’代表居中,這些需要搭配width使用。
我們看個(gè)例子:
>>> my_str = 'dotcpp' >>> print('{:@>10}'.format(my_str)) @@@@dotcpp
這個(gè)例子里我們選擇了右對齊,然后寬度為10,空白字符用符號(hào)@代替。
6) ‘#’為進(jìn)制前綴。
7) .k中的k是可選參數(shù),用來表示小數(shù)點(diǎn)后保留的數(shù)字。
8) type可選擇參數(shù)來指定類型,常用的有S來表示字符串、D來表示十進(jìn)制整數(shù)、%來表示百分比、f或者F表示浮點(diǎn)數(shù)。
下面我們在通過一個(gè)例子來使用一下上述這些方法。
my_str = 'dotcpp'#先定義兩個(gè)字符串 my_string = 123456.654321 print('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’為小數(shù)點(diǎn)后保留2位小數(shù),‘f’為浮點(diǎn)類型。
3. 總結(jié)
關(guān)于字符串就講到這里,字符串的使用是十分頻繁的,所以大家一定要通過習(xí)題去練習(xí)并掌握它。
1012 | [編程入門]字符串分類統(tǒng)計(jì) |
1040 | [編程入門]實(shí)數(shù)的打印 |
1048 | [編程入門]自定義函數(shù)之字符串拷貝 |
1063 | 二級C語言-統(tǒng)計(jì)字符 |
1093 | 字符逆序 |
1124 | C語言訓(xùn)練-大、小寫問題 |
1126 | C語言訓(xùn)練-字符串正反連接 |
1130 | C語言訓(xùn)練-數(shù)字母 |
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程