1.不管數據類型如何,%s只能替換% method中的字符串類型。
2.單個參數可以輸出多次,參數的順序可以不同。
3.填充方式非常靈活,對齊方式非常強大。
4.官方推薦的方法% method將在以後的版本中被淘汰。
格式的壹個例子
打印“妳好{0}”。格式(“世界”)
將輸出hello world。
格式格式
替換字段::= " { "[字段名稱] ["!"轉換] [":" format_spec] "} "
字段名稱::=參數名稱("."attribute _ name | "[" element _ index "]")*
arg _ name::=[標識符|整數]
屬性名稱::=標識符
元素索引::=整數|索引字符串
index _ string::= & lt;除“]”以外的任何源字符& gt+
轉換::= "r" | "s" | "a "
格式規格::= & lt在下壹節中描述& gt
格式_規格格式
format _ spec::=[[fill]align][sign][#][0][width][,][。精度][類型]
填充::= & lt任何字符& gt
align::= " & lt;| " >| "=" | "^"
符號::="+" | "-" | " "
寬度::=整數
精度::=整數
類型::= " b " | " c " | " d " | " E " | " E " | " F " | " F " | " G " | " G " | " n " | " o " | " s " | " X " | " X " | " "
應用:
壹次填充
1.按位置填充字符串
打印“妳好{0}我是{1}”。格式('凱文','湯姆')#
妳好,凱文,我是湯姆
打印“妳好{}我是{}”。格式('凱文','湯姆')#
妳好,凱文,我是湯姆
打印“妳好{0}我是{1}”。我的
名稱為{0}。格式('凱文','湯姆')#妳好凱文我是湯姆。
我的名字是凱文
Foramt將按位置順序將參數填入字符串。第壹個參數是0,然後是1...
不用輸入數字,數字也會按順序填寫。
同壹個參數可以填充多次,這是format比%更高級的地方。
2.按鍵填充
打印“妳好{name1}我是{name2}”。format(name1='Kevin ',name2='Tom') #妳好,Kevin,我是Tom
3.按下標填充
names=['凱文','湯姆']
打印“妳好{names[0]}我是
{names[1]} '。格式(名稱=名稱)#
妳好,凱文,我是湯姆
打印“妳好{0[0]}我是{0[1]}”。格式(姓名)#
妳好,凱文,我是湯姆
4.通過字典鍵
names={'name':'Kevin ',' name2':'Tom'}
打印“妳好{names[name]}我是{names[name2]}”。format(names=names) #妳好,凱文,我是湯姆
註意訪問字典的鍵,不帶引號
5.通過對象的屬性
類名():
name1= '凱文'
名字2= '湯姆'
打印“妳好{names.name1} i
am {names.name2}”。格式(名稱=名稱)#
妳好,凱文,我是湯姆
使用神奇參數
args=['lu']
kwargs = {'name1': 'Kevin ',' name2': 'Tom'}
打印“妳好{name1} {}我是{name2}”。format(*args,**kwargs) #妳好,Kevin,我是Tom
兩種格式轉換
b、D、O和X分別是二進制、十進制、八進制和十六進制。
數字格式輸出描述
3.1415926 {:. 2f } 3.14保留兩位小數。
3.1415926 {:+. 2f } 3.14帶符號,保留兩位小數。
-1 {:+.2f} -1帶符號,保留兩位小數。
2.71828 {:.0f} 3不帶小數
1000000 {:} 1,000,000逗號分隔的數字格式
0.25 {:.2%} 25.00%百分比格式
10000000 {:. 2e } 1.00 e+09指數記數法
25 {0:b} 11001轉換為二進制
25 {0:d} 25轉換為十進制
25 {0:o} 31轉換為八進制。
25 {0:x} 19轉換為十六進制
三對齊和填充
數字格式輸出描述
5 {:0 & gt;2} 05位零填充(左填充,寬度2)
5 {:x & lt;4} 5xxx數字補數x(填充右側,寬度為4)
10 {:x 4} x10x數字補碼x(填充右側,寬度為4)。
13 {:10} 13右對齊(默認寬度為10)。
13 {:& lt;10} 13左對齊(寬度為10)
13 {:10} 13中間對齊(寬度10)
其他四個
1.轉義{和}符號
打印“{妳好{0} }}”。格式(“凱文”)
像% in%中的%% escaping%壹樣,formate是用兩個大括號轉義的。
2 .作為函數的格式
f = '您好{0}我是{1} '。格式
打印f('凱文','湯姆')
步驟3格式化日期時間
now=datetime.now()
打印“{:%Y-%m-%d %X}”。格式(現在)
4.{}嵌入{}
打印“妳好{ 0:& gt;{1}} '.格式(“凱文”,50)
5.感嘆號的用法
!可以在後面加s r a分別對應str() repr() ascii()。
函數是在填充之前使用相應的函數來處理參數。
打印" {!s}”。格式(' 2') #
2
打印" {!r}”。格式(' 2') # '2 '
區別在於repr有引號,str()是面向用戶的為了可讀性,repr()是面向python解析器的,返回值代表python內部的意思。
Ascii()不斷報告錯誤。可能這個功能只有3.0才有。