自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
語法介紹
format()可以對數據進行格式化處理操作,語法如下:
format(value, format_spec)
format_spec為格式化解釋。當參數format_spec為空時,等同于函數str(value)的方式。value為要轉換的數據。format_spec可以設置非常復雜的格式轉換參數,實現比較完備的數據格式處理模板。format_spec的編寫方式如下形式:
format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
format_spec格式控制符可以分為文字對齊、填充值、標志設置、格式化、類型轉換、千位符(數字分組)等主要應用。細化分類說明如圖1所示。
圖1? format_spec格式控制符細化分類
主要參數說明:
1)fill(填充值):此處可以填寫任何字符,通常與align、width一起使用,實現指定位數字符填充,通常格式如圖2所示,填充效果及位置如圖3所示。
圖2? fill?填充格式
圖3? fill?填充格式
通常用0、*、#等進行填充。如果不寫填充值,則使用默認填充值,默認填充值為空格。代碼如下:
print(format(81,'@<10'))??????????????#?用@填充,寬度為10個空格
print(format(81,'@>10'))??????????????#?用@填充,寬度為10個空格
輸出結果為:
81@@@@@@@@
@@@@@@@@81
2)align(對齊方式):指在width(數字寬度)內輸出時的對齊方式,分別使用<、>、^和=四個符號表示左對齊、右對齊、居中對齊和數字填充(只用于數字,在符號后進行補齊)。
3)width(數字寬度):指設定輸出字符寬度,如果數據的實際位數比width指定寬度值大,則使用數據實際的長度。如果該值的實際位數小于指定寬度,則位數將設定的fill值填充或設定的0值填充,如果沒有設置填充值,則用空格填充。
s = "PYTHON"
print(format(s,'10'))????????? #?沒有標志符,如果是字符串則默認左對齊,不足寬度部分默認用空格填充
print(format(81.23,'10'))????? #?沒有標志符,如果是數字則默認右對齊,不足寬度部分默認用空格填充
print(format(s,'0>10'))??????? #?右對齊,不足指定寬度部分用0號填充
print(format(s,'>04'))???????? #?右對齊,因字符實際寬度大于指定寬度4,不用填充
print(format(s,'*>10'))??????? #?右對齊,不足部分用“*”號填充
print(format(s,'>010'))??????? #?右對齊,不足部分用0號填充
print(format(s,'>10'))???????? #?右對齊,默認用空格填充
print(format(s,'<10'))???????? #?左對齊,默認用空格填充
print(format(s,'<010'))??????? #?左對齊,不足部分用0號填充
print(format(s,'@^10'))??????? #?中間對齊,不足部分用“@”填充,寬度為10個空格
print(format(81.23,'0<10'))??? #?左對齊,不足部分用0號填充
print(format(81.23,'@^10'))??? #?右對齊,不足部分用“@”填充
print(format(81.23,'0>10'))??? #?右對齊,不足部分用0號填充
print(format(-81.23,'0=10'))??? #?右對齊,負號后面不足部分用0號填充,
輸出結果為:
PYTHON???
???? 81.23
0000PYTHON
PYTHON
****PYTHON
0000PYTHON
??? PYTHON
PYTHON???
PYTHON0000
@@PYTHON@@
81.2300000
@@81.23@@@
0000081.23
-000081.23
4)Precision(精度):精度由小數點(.)開頭。對于浮點數,精度表示小數部分輸出的有效位數。對于字符串,精度表示輸出的最大長度。?Precision(精度)通常和Type(類型)配合起來使用。
5)Type(類型):表示輸出字符串、整數和浮點數類型的格式規則,默認為字符型s。對于整數類型,輸出格式包括7?種:
l??b:?輸出整數的二進制方式;
l??c:?輸出整數對應的?Unicode?字符;
l??d:?輸出整數的十進制方式;
l??n:?輸出整數的十進制方式;
l??o:?輸出整數的八進制方式;
l??x:?輸出整數的小寫十六進制方式;
l??X:?輸出整數的大寫十六進制方式;
對于浮點數類型,輸出格式包括7種:
l??e:?輸出浮點數對應的小寫字母?e?的指數形式;
l??E:?輸出浮點數對應的大寫字母?E?的指數形式;
l??f:?輸出浮點數的浮點表示形式,默認保留6位小數
l??F:?輸出浮點數的浮點表示形式,默認保留6位小數,無窮大轉換成大寫字母'INF'
l??g,自動調整將整數、浮點數轉換成?浮點型或科學計數法表示(超過6位數用科學計數法),并將其格式化到指定位置(如果是科學計數則是e;)。
l??G,自動調整將整數、浮點數轉換成?浮點型或科學計數法表示(超過6位數用科學計數法),并將其格式化到指定位置(如果是科學計數則是E;)。
l??%:?輸出浮點數的百分形式。
????快用錦囊
錦囊1 ?格式化字符
格式化字符主要包括截取字符串,字符串對齊方式顯示,填充字符串等幾個方面,下面舉例如下:
print(format('PYTHON','M^20.3'))?#?截取3個字符,寬度為20居中,不足用‘M’填充
print(format("PYTHON",'10'))??????????#?默認居左顯示,不足部分用‘?’填充
print(format('mingrisoft.com','.3'))??#?截取3個字符,默認居左顯示
print(format("PYTHON",'>10'))?????????#?居右顯示,不足部分用‘?’填充
s='mingrisoft.com'
print(format(s,'0>20'))????#?右對齊,不足指定寬度部分用0號填充
print(format(s,'>4'))??????#?右對齊,因字符實際寬度大于指定寬度4,不用填充
print(format(s,'*>20'))????#?右對齊,不足指定寬度部分用*號填充
print(format(s,'>020'))????#?右對齊,指定0標志位填充
print(format(s,'>20'))?????#?右對齊,沒指定填充值,用默認值空格填充
print(format(s,'+^30'))????#?居中對齊,用+號填充不足部分
輸出效果為:
MMMMMMMMPYTMMMMMMMMM
PYTHON???
min
??? PYTHON
000000mingrisoft.com
mingrisoft.com
******mingrisoft.com
000000mingrisoft.com
????? mingrisoft.com
++++++++mingrisoft.com++++++++
錦囊2 ?生成數據編號
利用format()函數實現數據編號。對數據進行編號,也是對字符串格式化操作的一種方式,使用format()方法可以對字符串進行格式化編號。只需設置填充字符(編號通常設置0),設置對齊方式時可以使用<、>和^符號表示左對齊、右對齊和居中對齊,對齊填充的符號在“寬度”范圍內輸出時填充,即可。對數字1進行3位編號,右對齊,需要設置format()方法的填充字符為0,對齊方式為右對齊,寬度為3。具體代碼為:
輸出結果為:
001
print(format(1,'>03'))
print(format(15,'0>5'))
輸出結果為:
001
00015
要生成的編號通常比較復雜,如根據當天的日期建立編號,或者批量生成編號,或者將給定的批量數據中的數字轉換成位數固定的編號,下面給出實現如上編號的實現方法:
import?datetime
#?時間+編號
wx=datetime.datetime.now().date()
now=datetime.datetime.now()
print(str(wx),format(1,'0>3'))??????????????????#?年月日?+3位編號
print(format(now,'%Y-%m-%d'),format(1,'0>3'))???#?年月日?+3位編號
print(format(now,'%Y%m%d'),'NO'+format(1,'0>3'))???#?年月日+NO+3位編號
print(format(now,'%d'),'NO'+format(1,'0>3'))???#?日期+NO+3位編號
print(format(now,'%H%M'),'NO'+format(1,'0>3'))???#?時鐘+分?+NO+3位編號
輸出為:
2019-07-05 001
2019-07-05 008
20190705 NO008
05 NO008
2115 NO008
#?批量生成編號
for?i?in?range(1,6):
????????print(format(i,'0>2'))
01
02
03
04
05
#?格式化列表編號
#?對已有非編號數字進行格式化編號
nba={1:'倫納德',2:'哈登',3:'喬治'}
for?key,value?in?nba.items():
????print(format(key,'0>3'),value)
結果輸出為:
001?倫納德
002?哈登
003?喬治
要實現嵌套編號,如A001-A005,B001-B005,C001-005的嵌套編號。代碼如下:
for?i?in?range(65,69):
????for?j?in?range(1,6):
?????? data=chr(i)+format(j,'0>3')+' '
???????print(data,end='')
????print()
結果輸出如下:
?