python強大的字串格式化函數 - format

高洛峰
發布: 2016-10-17 11:38:22
原創
1175 人瀏覽過

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

語法

它透過{}和:來取代%


位置方法格式化

>>> '{}.{}'.format('pythontab', 'com')
'pythontab.com'
>>> '{}.{}.{}'.format('www', 'pythontab', 'com')
'www.pythontab.com'
>>> '{1}.{2}'.format('www', 'pythontab', 'com')
'pythontab.com'
>>> '{1}.{2} | {0}.{1}.{2}'.format('www', 'pythontab', 'com')
'pythontab.com | www.pythontab.com'
登入後複製

字串的format函數可以接受不限個參數,參數位置可以不按順序,參數可以不使用或者使用多次,非常靈活

注意: python2.6下不能為空{},python2.7以上版本可以。


透過關鍵字參數

>>> '{domain}, {year}'.format(domain='www.pythontab.com', year=2016)
'www.pythontab.com, 2016'
>>> '{domain} ### {year}'.format(domain='www.pythontab.com', year=2016)
'www.pythontab.com ### 2016'
>>> '{domain} ### {year}'.format(year=2016,domain='www.pythontab.com')
'www.pythontab.com ### 2016'
登入後複製

透過物件屬性

>>> class website: 
        def __init__(self,name,type): 
            self.name,self.type = name,type 
        def __str__(self): 
          return 'Website name: {self.name}, Website type: {self.type} '.format(self=self) 
>>> print str(website('pythontab.com', 'python'))
Website name: pythontab.com, Website type: python
>>> print website('pythontab.com', 'python')
Website name: pythontab.com, Website type: python
登入後複製

透過下標

>>> '{0[1]}.{0[0]}.{1}'.format(['pyhtontab', 'www'], 'com')
'www.pyhtontab.com'
登入後複製

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


格式限定符

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

填充與對齊

填充常跟對齊一起使用

填充與對齊<、>^

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

:號後面帶填充的字符,只能是一個字符,不指定的話默認是用空格填充


代碼實例:

數字精準度與型別f

精準度常跟型f一起使用

>>> &#39;{:>10}&#39;.format(2016)
&#39;      2016&#39;
>>> &#39;{:#>10}&#39;.format(2016)
&#39;######2016&#39;
>>> &#39;{:0>10}&#39;.format(2016)
&#39;0000002016&#39;
登入後複製

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

其他類型

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

>>> &#39;{:.2f}&#39;.format(2016.0721)
&#39;2016.07&#39;
登入後複製

   

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

>>> &#39;{:b}&#39;.format(2016)
&#39;11111100000&#39;
>>> &#39;{:d}&#39;.format(2016)
&#39;2016&#39;
>>> &#39;{:o}&#39;.format(2016)
&#39;3740&#39;
>>> &#39;{:x}&#39;.format(2016)
&#39;7e0&#39;
>>>
登入後複製

 format的功能太強大了, 還有很多功能, 大家可以去嘗試。


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!