格式化字串format函式

2021-07-03 11:00:05 字數 2073 閱讀 3382

自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'

格式化字串format函式

format 一 語法 通過 和 來代替 二 事例 name bigberg age 18 msg1 my name is and my age is format name,age msg2 my name is and my age is format name,age msg3 my name...

字串格式化 format

tp1 i am age format seven 18,alex print tp1 fill align sign0,type 空格 正號空格,負號加負 可選 為數字新增分隔符,如 1,000,000 width 可選 格式化位所佔寬度 precision 可選 小數字保留精度 type 可選 ...

format 格式化字串

1.format 格式化字串 1 順序傳參 2 索引傳參 3 關鍵字傳參 4 容器型別傳參 代表的是佔位符2.順序傳參 strvar 向 開了一槍 res strvar.format 光頭強 熊二 print res 3.索引傳參 strvar 給乙個平底鍋 res strvar.format 灰太...