詳解Python中的字符串格式化
什么是字符串格式化,為什么需要這樣做?
我們有時(shí)候刷抖音/B站看到封面很好看,但是進(jìn)入直播發(fā)現(xiàn),不過(guò)如此!
想必主播通過(guò)某種方式把輸出轉(zhuǎn)換為讀者想看的內(nèi)容。
是不是大概懂了什么是格式化和格式化的必要性了!
僅僅類(lèi)比,我們程序的格式化,并沒(méi)有那么過(guò)份!1輸出還是1,只是人類(lèi)更好讀懂了。
而不像網(wǎng)絡(luò)主播那樣稍微格式化(工程挺大)從1變成了0。
畢竟程序不能欺騙開(kāi)發(fā)者。
必要性:輸出為更好的格式化,方便開(kāi)發(fā)者和用戶(hù)讀懂輸出。
程序中都有哪些格式化?
網(wǎng)上說(shuō)有三種,四種,未來(lái)還可能會(huì)增加其他庫(kù)。
學(xué)委開(kāi)發(fā)過(guò)多種語(yǔ)言,大概總結(jié)如下兩個(gè)大類(lèi):
- 字符串占位符替換
- 字符串關(guān)鍵字替換
下面看看代碼
占位符格式化
第一種%占位符格式化
python中我們最常見(jiàn)的是'%‘ 這類(lèi)占位符號(hào)
str = "hello" "this is a string: %s" % str "this is a string: %s, %s" % (str, str)
上面我們觀察一下,可以發(fā)現(xiàn)輸出中‘%s'被替換為了'hello';
另一個(gè)是多個(gè)‘%s'的替換是用一個(gè)元組,按照對(duì)應(yīng)下標(biāo)來(lái)替換。
格式化基本上都可以使用'%s'來(lái)完成。
好,懂了這個(gè),我們繼續(xù)看看下面的代碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/30 10:13 上午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學(xué)委 # @XueWeiTag: CodingDemo # @File : string_format.py # @Project : hello import sys first = "持續(xù)學(xué)習(xí)" second = "持續(xù)開(kāi)發(fā)" slogan = first + second print(slogan) banner = "*" * 16 print(banner) slice = slogan[2:4] print(slice) print(""""學(xué)習(xí)" in slogan : %s""" % ("學(xué)習(xí)" in slogan)) print(""""不學(xué)習(xí)" not in slogan : %s""" % ("不學(xué)習(xí)" not in slogan)) print(r"""打印\n換行被當(dāng)做普通字符輸出了!""") # 以上我們都可以看到%,很多次代碼都有說(shuō)到這個(gè),但是并沒(méi)有過(guò)多解釋 print("%s" % slogan) # 最常用了%s 格式化字符串 # print("%c"%'ccc')#TypeError: %c requires int or char print("%c" % 'c') # %c 通常用來(lái)強(qiáng)制檢測(cè)待輸出的字符串必須長(zhǎng)度為1 print("%c" % '雷') # %c 通常用來(lái)強(qiáng)制檢測(cè)待輸出的字符串必須長(zhǎng)度為1 number = 102.40101 print("%%i 符號(hào)整數(shù) %i" % number) print("%%i 符號(hào)整數(shù):%i" % -number) print("%%d 符號(hào)整數(shù) %d" % number) print("%%d 符號(hào)整數(shù) %d" % -number) print("%%u 無(wú)符號(hào)整數(shù):%u" % number) print("%%u 無(wú)符號(hào)整數(shù):%u" % -number) #print("八進(jìn)制 %o" % number) print("%%o 八進(jìn)制 %o" % 102) print("%%x16進(jìn)制 %x" % 102) #print("16進(jìn)制 %X" % 102) print("%%e 自然常數(shù) e進(jìn)制: %e" % number) #print("%E" % number) print("%%f 浮點(diǎn)數(shù) %f" % number) print("%%g 靈活的有效顯示:%g" % number) #保證顯示6微有效數(shù)字的前提下,靈活的選擇小數(shù)方式,或者科學(xué)計(jì)數(shù)法 #print("%G" % number) print("%%g 靈活的有效顯示:%g" % (number*10001)) #保證顯示6微有效數(shù)字的前提下,靈活的選擇小數(shù)方式,或者科學(xué)計(jì)數(shù)法 #下面兩種寫(xiě)法需要注意執(zhí)行順序 #print("%g" % number*10001) #注意這種寫(xiě)法 #print("%g" % number**10) #注意這種寫(xiě)法
讀者可以直接復(fù)制運(yùn)行代碼,學(xué)委補(bǔ)充了運(yùn)行效果圖:
這里比較特殊的是‘%u'無(wú)符號(hào)整型的展示,正負(fù)數(shù)并無(wú)區(qū)別。
那是肯定的,無(wú)符號(hào)整型跟有符號(hào)整型是表示數(shù)的兩種手段。
但是無(wú)符號(hào)的比有符號(hào)多了一個(gè)位來(lái)放數(shù)字,所以范圍更大。
上面這段題外話(huà),小白稍微看看或者跳過(guò)。我們繼續(xù)看看其他格式化方式。
第二種占位符格式化
跟上面稍微區(qū)別就是我們會(huì)看到一下明顯的下標(biāo)。
{0}, {1}, … {n}
想要留幾個(gè)替換位,就放幾個(gè){}括起來(lái),但要求必須給到n個(gè)參數(shù),更多信息參考https://docs.python.org/3/library/string.html
這個(gè)非常簡(jiǎn)單直接,我們看看代碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/30 10:13 上午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學(xué)委 # @XueWeiTag: CodingDemo # @File : string_format1.py # @Project : hello import sys slogan = "持續(xù)學(xué)習(xí)持續(xù)開(kāi)發(fā)" author = "雷學(xué)委" text = "{0}, {1}".format(slogan, author) print("text= %s" % text)
關(guān)鍵字格式化
非常好理解就是類(lèi)似{}一對(duì)大括弧中間為待替換的內(nèi)容。
這個(gè)非常簡(jiǎn)單直接,我們看看代碼:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/30 10:13 上午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學(xué)委 # @XueWeiTag: CodingDemo # @File : string_format2.py # @Project : hello import sys slogan = "持續(xù)學(xué)習(xí)持續(xù)開(kāi)發(fā)" author = "雷學(xué)委" text = f"{slogan} , {author}" print("text= %s" % text)
運(yùn)行效果如下:
從這里看,關(guān)鍵字格式化比較友好!
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python實(shí)現(xiàn)剪刀石頭布小游戲(與電腦對(duì)戰(zhàn))
這篇文章給大家分享Python基礎(chǔ)實(shí)現(xiàn)與電腦對(duì)戰(zhàn)的剪刀石頭布小游戲,練習(xí)if while輸入和輸出,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-12-12pygame實(shí)現(xiàn)飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了pygame實(shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03python進(jìn)程池實(shí)現(xiàn)的多進(jìn)程文件夾copy器完整示例
這篇文章主要介紹了python進(jìn)程池實(shí)現(xiàn)的多進(jìn)程文件夾copy器,結(jié)合完整實(shí)例形式分析了Python基于多進(jìn)程與進(jìn)程池的文件操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-11-11Django框架教程之正則表達(dá)式URL誤區(qū)詳解
正則表達(dá)式對(duì)大家來(lái)說(shuō)應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Django框架教程之正則表達(dá)式URL誤區(qū)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01Python3里的super()和__class__使用介紹
這篇文章主要介紹了Python3里的super()和__class__使用介紹,本文用實(shí)例講解了這兩個(gè)方法之間的關(guān)系,需要的朋友可以參考下2015-04-04python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-02-02python opencv實(shí)現(xiàn)旋轉(zhuǎn)矩形框裁減功能
這篇文章主要為大家詳細(xì)介紹了python opencv實(shí)現(xiàn)旋轉(zhuǎn)矩形框裁減功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07解決nohup重定向python輸出到文件不成功的問(wèn)題
今天小編就為大家分享一篇解決nohup重定向python輸出到文件不成功的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05基于OpenCv實(shí)現(xiàn)的人臉識(shí)別(附Python完整代碼)
人臉識(shí)別是基于人的臉部特征信息進(jìn)行身份識(shí)別的一種生物識(shí)別技術(shù),下面這篇文章主要給大家介紹了關(guān)于如何基于OpenCv實(shí)現(xiàn)的人臉識(shí)別,文中還附Python完整代碼,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11pyqt5 textEdit、lineEdit操作的示例代碼
這篇文章主要介紹了pyqt5 textEdit、lineEdit操作的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08