1. 程式人生 > >Python格式化輸出與format函式

Python格式化輸出與format函式

本文主要整理和彙總python一系列的格式化輸出方式:

列印整數

print ("I'm number %d" % (20))

>>> I'm number 20  

列印浮點數(預設)

print("This book's weight is %f kg" % (0.85))

>>> This book's height is 0.850000 kg 

列印浮點數(指定位數)

print("His height is %.2f m" % (1.73))

>>> His height is 1.73 m 

列印字串

print("My name is %s" % ('terry'))

>>> My name is terry 

列印指定佔位符寬度

print("Type:%9s Value:%3d Latency:%5.2f" % ('AVP_KMOD', 44, 0.45))

>>> Type: AVP_KMOD Value: 44 Latency: 0.45 

列印指定佔位符(左對齊)

print("Name:%-10s Age:%-8d Height:%-8.2f"%("Terry",25,1.83))

>>> Name:Terry      Age:25       Height:1.83 

列印指定佔位符(前導0)

print ("Speed:%010d Rate:%08d Height:%08.2f"%(1000,25,1.83))

>>> Speed:0000001000 Rate:00000025 Height:00001.83 

在python2.6之後,又增加了一種格式化字串的函式str.format(),通過{}來代替%。
用法主要包含以下幾類:

通過位置
字串的format函式可以接受不限個引數,位置可以不按順序,可以不用或者用多次:

print('{0},{1},{0}'.format('aaa', 'bbb'))

>>> aaa,bbb,aaa  

通過關鍵字引數

print('{name},{age}'.format(age=18,name='Terry'))

>>> Terry,18  

通過物件屬性

class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __str__(self):
        return 'This guy is {self.name},he is {self.age} old.'.format(self=self)

print str(Person('Terry',18))

>>> This guy is Terry,he is 18 old.

通過下標

person = ['Terry',18]
print('{0[0]},{0[1]}'.format(person))

>>> Terry,18

通過格式
如上面的前導0:

print('{:0>8}'.format('189'))
print('{:>8}'.format('189'))
print('{:a>8}'.format('189'))

>>> 00000189
>>>      189
>>> aaaaa189

以及浮點數:

print('{:.2f}'.format(321.33345))

>>> 321.33

其他型別
主要就是二進位制b、十進位制d、八進位制o、十六進位制x:

print('{:b}'.format(46))
print('{:d}'.format(46))
print('{:o}'.format(46))
print('{:x}'.format(46))

>>> 101110
>>> 46
>>> 56
>>> 2e

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

print('{:,}'.format(99988844333))

>>> 99,988,844,333