Python強大的格式化format

2022-06-05 19:24:09 字數 2740 閱讀 3926

自python2.6開始,新增了一種格式化字串的函式str.format(),可謂威力十足。那麼,他跟之前的%型格式化字串相比,有什麼優越的存在呢?讓我們來揭開它羞答答的面紗。

語法

它通過{}和:來代替%。

「對映」示例

通過位置

in [1]: '

,'.format('

kzc',18)

out[1]: '

kzc,18

'in [2]: '

{},{}

'.format('

kzc',18)

out[2]: '

kzc,18

'in [3]: '

,,'.format('

kzc',18)

out[3]: '

18,kzc,18

'

字串的format函式可以接受不限個引數,位置可以不按順序,可以不用或者用多次,不過2.6不能為空{},2.7才可以。

通過關鍵字引數

in [5]: '

,'.format(age=18,name='

kzc'

) out[5]: '

kzc,18

'

通過物件屬性

class

person:

def__init__

(self,name,age):

self.name,self.age =name,age

def__str__

(self):

return

'this guy is ,is old

'.format(self=self)

in [2]: str(person('

kzc',18))

out[2]: '

this guy is kzc,is 18 old

'

通過下標

in [7]: p=['

kzc',18]

in [8]: ','

.format(p)

out[8]: '

kzc,18

'

有了這些便捷的「對映」方式,我們就有了偷懶利器。基本的python知識告訴我們,list和tuple可以通過「打散」成普通引數給函式,而dict可以打散成關鍵字引數給函式(通過和*)。所以可以輕鬆的傳個list/tuple/dict給format函式。非常靈活。

格式限定符

它有著豐富的的「格式限定符」(語法是{}中帶:號),比如:

填充與對齊

填充常跟對齊一起使用

^、分別是居中、左對齊、右對齊,後面帶寬度

:號後面帶填充的字元,只能是乙個字元,不指定的話預設是用空格填充

比如

in [15]: '

'.format('

189'

)out[15]: '

189'

in [16]: '

'.format('

189'

)out[16]: '

00000189

'in [17]: '

'.format('

189'

)out[17]: '

aaaaa189

'

精度與型別f精度常跟型別f一起使用

in [44]: '

'.format(321.33345)

out[44]: '

321.33

'

其中.2表示長度為2的精度,f表示float型別。

其他型別

主要就是進製了,b、d、o、x分別是二進位制、十進位制、八進位制、十六進製制。

in [54]: '

'.format(17)

out[54]: '

10001

'in [55]: '

'.format(17)

out[55]: '17'

in [56]: '

'.format(17)

out[56]: '21'

in [57]: '

'.format(17)

out[57]: '

11'

用,號還能用來做金額的千位分隔符。

in [47]: '

'.format(1234567890)

out[47]: '

1,234,567,890

'

格式轉化!s、!a、!r乙個物件本身不是str,ascii,repr格式,可以使用!s、!a、!r,將其轉成str,ascii,repr

示例請參考,python cook 第八章 p230

Python強大的格式化format

自python2.6開始,新增了一種格式化字串的函式str.format 可謂威力十足。那麼,他跟之前的 型格式化字串相比,有什麼優越的存在呢?讓我們來揭開它羞答答的面紗。語法 它通過 和 來代替 對映 示例 通過位置 in 1 format kzc 18 out 1 kzc,18 in 2 for...

Python強大的格式化format

format kzc 18 kzc,18 format kzc 18 kzc,18 format kzc 18 18,kzc,18 format age 18,name kzc kzc,18 通過物件屬性 class person def init self,name,age self.name,s...

python 格式化和format格式化

格式 name flags width precision typecode name 可選,用於選擇指定的key flags 可選,可提供的值有 右對齊,整數前加正號,負數前加負號 左對齊,正數錢無符號,負數前加負號 空格 右對齊 正數前加空格,負數前加負號 0 右對齊,正數前無符號,負數前加負號...