python中的格式化輸出用法總結

黄舟
發布: 2016-12-28 17:59:40
原創
1459 人瀏覽過

本文實例總結了python中的格式化輸出用法。分享給大家參考,具體如下:

Python一共有兩種格式化輸出語法。

另一種是類似C語言printf的方式,稱為Formatting Expression

>>> '%s %d-%d' % ('hello', 7, 1)  
'hello 7-1'
登入後複製

另一種是類似C#的方式,稱為String Formatting Method Calls

>>> '{0} {1}:{2}'.format('hello', '1', '7')  
'hello 1:7'
登入後複製

第一種方式可以指定浮點數的精確度,例如

>>> '%.3f' % 1.234567869  
'1.235'
登入後複製

運行時動態指定浮點數的精確度

但是當程式碼在運作中如何動態地透過參數來指定浮點數的精確度呢?

python的神奇之處在於它又提供了一個非常方便的語法。只需要在 typecode(這裡是f)之前加一個 *,浮點數的精確度就用它前面的數字來指定。

>>> for i in range(5):  
... '%.*f' % (i, 1.234234234234234)  
...  
'1'  
'1.2'  
'1.23'  
'1.234'  
'1.2342'
登入後複製

透過輸出結果可以看出,精確度都是在運行時動態指定,這樣就省去了格式化字串的拼湊。

使用 String Formatting Method Calls 可以更簡潔地完成功能。

>>> for i in range(5):  
...  '{0:.{1}f}'.format(1 / 3.0, i)  
...  
'0'  
'0.3'  
'0.33'  
'0.333'  
'0.3333'
登入後複製

實作一個簡單的模板工具

Django提供的模板語言,可以讓我們透過一個dict(字典)把python變數綁定的html檔中,其實利用python的格式化輸出我們也可以只做一個文字替換功能。

>>> replay = """ 
... Hello World Cup... 
... Germany vs Brazil 
... %(germany)d : %(brazil)d"""  
>>> print(replay % {'germany': 7, 'brazil': 1})  
Hello World Cup...  
Germany vs Brazil  
7 : 1
登入後複製

還可以這樣玩

>>> germany = 7  
>>> brazil = 1  
>>> '%(germany)d : %(brazil)d' % vars()  
'7 : 1'
登入後複製

在格式化字串中存取物件屬性和字典鍵值

>>> 'My {1[kind]} runs {0.platform}'.format(sys, {'kind': 'pc'})  
'My pc runs linux'  
>>> 'My {map[kind]} runs {sys.platform}'.format(sys=sys, map={'kind': 'pc'})  
'My pc runs linux'
登入後複製

在格式化字串中透過下標(正整數)存取list元素

>>> somelist = list('SPAM')  
>>> 'first={0[0]}, third={0[2]}'.format(somelist)  
'first=S, third=A'  
>>> 'first={0}, last={1}'.format(somelist[1], somelist[-1])  
'first=P, last=M'  
>>> parts = somelist[0], somelist[-1], somelist[1:-1]  
>>> 'first={0}, last={1}, middle={2}'.format(*parts)  
"first=S, last=M, middle=['P', 'A']"  
>>>
登入後複製

 以上就是python中的格式化輸出用法總結的內容,更多相關內容請關注PHP中文網(www.php.cn)!


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