前言
今天跟大家聊聊字符串的格式化這部分內(nèi)容。乍一聽“格式化”這三個字,有的初學(xué)者可能會懵:難道這是要清空字符串的節(jié)奏?
其實不是的,恰恰相反,格式化字符串是為了讓字符串變的更美觀、更靈活。接下來就給大家詳細(xì)介紹格式化字符串的概念以及具體用法。
一、什么是格式化字符串?
格式化字符串是將現(xiàn)有的字符串按照指定模板嵌入,再生成固定格式的新字符串。
為什么要這樣做呢?主要還是開發(fā)上很多場景需要用到:比如在某度進(jìn)行關(guān)鍵字搜索問題時,每次發(fā)送不同的關(guān)鍵字返回不同結(jié)果,但其實發(fā)給后臺的鏈接格式是一樣的,也就是模板一致,只是里面的關(guān)鍵字參數(shù)不同,也就是俗稱的套娃。比如下圖所示:
任何網(wǎng)站基本都是遵循這樣的規(guī)律進(jìn)行開發(fā),所以這就是為什么需要學(xué)習(xí)字符串的格式化處理。
二、使用 % 格式化字符串
在Python中提供了兩種方法來格式化字符串,先說第一種:使用 % 操作符,語法格式如下:
'%[-][+][0][m][.n]格式化字符'%exp
參數(shù)說明:
- –:可選參數(shù),用于指定左對齊,正數(shù)前方無符號,負(fù)數(shù)前方加負(fù)號。
- +:可選參數(shù),用于指定右對齊,正數(shù)前方加正號,負(fù)數(shù)前方加負(fù)號。
- 0:可選參數(shù),表示右對齊,正數(shù)前方無符號,負(fù)數(shù)前方加負(fù)號,用 0 填充空白處(一般與 m 參數(shù)一起使用)。
- m:可選參數(shù),表示占有寬度。
- .n:可選參數(shù),表示小數(shù)點后保留的位數(shù)。
- 格式化字符:用于指定要格式化的字符是什么類型,常見的格式化字符類型及表示方法如下表所示。
格式化字符 | 說明 | 格式化字符 | 說明 |
---|---|---|---|
%s | 字符串 | %o | 八進(jìn)制整數(shù) |
%d 或者 %i | 十進(jìn)制整數(shù) | %e | 指數(shù)(基底寫為e) |
%x | 十六進(jìn)制整數(shù) | %E | 指數(shù)(基底寫為E) |
%f 或者 %F | 浮點數(shù) | %% | 字符% |
- exp:要轉(zhuǎn)換的項。如果要指定多個,需要通過元組的形式進(jìn)行指定。
是不是看到這么多參數(shù)和格式化字符,瞬間感到很復(fù)雜呢?
其實一點也不難,我們可以把這些參數(shù)拆開來看,既然里面很多參數(shù)都是可選的,也就是可有可無,那就先把這些參數(shù)全部去掉再看,語法就變成了 ‘%格式化字符’%exp,接下來看看代碼示例,如下圖所示:
看完上圖代碼,是不是感覺簡單多了,至于那些可選參數(shù)則可以根據(jù)實際需求進(jìn)行添加。比如上圖代碼中出現(xiàn)的小數(shù)有多位,如果只想保留兩位有效數(shù)字,那就可以用到可選參數(shù) .n,代碼如下圖所示:
同理,其余的可選參數(shù),比如 m 占有寬度,指的是格式化字符串當(dāng)前占有的寬度是多少字符。還是以剛才的浮點數(shù)格式化為例,‘3.14’ 本身占據(jù) 4 個字符的寬度,我們也可以設(shè)置的更寬,代碼如下圖所示:
其余的可選參數(shù)以及格式化字符類型用法就不再逐一演示了,大家有空可以自己多練練。
?? 說明:由于使用 % 操作符是早期Python中提供的方法,自從Python2.6版本開始,字符串對象提供了 format() 方法對字符串進(jìn)行格式化。現(xiàn)在Python社區(qū)也推薦使用這種方法。所以建議大家重點學(xué)習(xí) format() 方法的使用。
三、使用 format() 格式化字符串
format() 方法語法格式如下:
str.format(args)
參數(shù)說明:
- str:用于指定字符串的顯示樣式(即模板)。
- args:用于指定要轉(zhuǎn)換的項,如果有多項,則用逗號分隔。
下面重點介紹創(chuàng)建模板。在創(chuàng)建模板時,需要使用 “{}” 和 “:” 指定占位符,語法格式如下:
{[index][:[[fill]align][sign][#][width][.precision][type]}
參數(shù)說明:
- index:可選參數(shù),用于指定要設(shè)置格式的對象在參數(shù)列表中的索引位置,索引值從 0 開始。如果省略,則根據(jù)值的先后順序自動分配。
- fill:可選參數(shù),用于指定空白處填充的字符。
- align:可選參數(shù),用于指定對齊方式(值為 “<” 時表示內(nèi)容左對齊;值為 “>” 時表示內(nèi)容右對齊;值為 “^” 時表示內(nèi)容居中),需要配合 width 一起使用。
- sign:可選參數(shù),用于指定有無符號數(shù)(值為 “+” 表示正數(shù)加正號,負(fù)數(shù)加負(fù)號;值為 “-” 表示正數(shù)不變,負(fù)數(shù)加負(fù)號;值為空格表示正數(shù)加空格,負(fù)數(shù)加負(fù)號)。
- #:可選參數(shù),用于對二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù),如果加上 #,表示會顯示 0b/0o/0x 前綴,否則不顯示前綴。
- width:可選參數(shù),用于指定所占寬度。
- .precision:可選參數(shù),用于指定保留的小數(shù)位數(shù)。
- type:可選參數(shù),用于指定類型。
format() 方法中常用的格式化字符如下表所示:
格式化字符 | 說明 | 格式化字符 | 說明 |
---|---|---|---|
s | 對字符串類型格式化 | b | 將十進(jìn)制整數(shù)自動轉(zhuǎn)換成二進(jìn)制表示再格式化 |
d | 十進(jìn)制整數(shù) | o | 將十進(jìn)制整數(shù)自動轉(zhuǎn)換成八進(jìn)制表示再格式化 |
c | 將十進(jìn)制整數(shù)自動轉(zhuǎn)換成對應(yīng)的 Unicode 字符 | x 或者 X | 將十進(jìn)制整數(shù)自動轉(zhuǎn)換成十六進(jìn)制表示再格式化 |
e 或者 E | 轉(zhuǎn)換為科學(xué)計數(shù)法表示再格式化 | f 或者 F | 轉(zhuǎn)換為浮點數(shù)(默認(rèn)小數(shù)點后保留6位)再格式化 |
經(jīng)歷過上面的 % 操作符繁多的可選參數(shù),再看到 format() 方法, 相信大家心里至少不會再懵。依葫蘆畫瓢,我們也先不看這些可選參數(shù),統(tǒng)統(tǒng)劃掉,語法就只剩下 ‘{}’.format(args)。代碼示例如下圖所示:
如果要格式化多個多個值,可以用到 index 可選參數(shù),代碼示例如下圖所示:
看到上圖,有的小伙伴可能會好奇:既然省略了,也可以格式化多個值,那為什么要多此一舉,再弄個 index 參數(shù)呢?其實有的場景下,是需要使用索引的,比如下圖代碼所示:
?? 說明:當(dāng)一個模板中,出現(xiàn)多個占位符時,指定索引位置的規(guī)范需統(tǒng)一,即全部采用手動指定,或者全部采用自動,否則會報錯,如下圖所示。
再看一個可選參數(shù) align,用來指定對齊方式,需要結(jié)合 width 寬度一起使用,代碼示例如下圖所示:
以此類推,其余的可選參數(shù)及格式化字符類型,大家日后都可以根據(jù)自己的實際開發(fā)按需取用,就不再做演示了。文章來源:http://www.zghlxwxcb.cn/news/detail-764862.html
總結(jié)
以上就是給大家介紹的格式化字符串所有內(nèi)容,里面需要著重理解并且熟練使用的就是 format() 方法。當(dāng)然如果有小伙伴喜歡使用 % 操作符這種方法也完全可以使用。兩種方法中都有很多可選參數(shù),建議大家業(yè)余要多練習(xí),不要死記硬背。文章來源地址http://www.zghlxwxcb.cn/news/detail-764862.html
到了這里,關(guān)于格式化字符串你都懂了嗎的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!