format格式化字符串方法相較於老版%格式方法的優勢:
1.不須要理會數據類型的問題,在%方法中'%s'只能替代字符串類型.
2.單個參數能夠屢次輸出,參數順序能夠不相同.
3.填充方式十分靈活,對齊方式十分強大.
4.官方推薦,%方法將會在後面的版本被淘汰.
format()方法的基本使用格式:
<模板字符串>.format(<逗號分隔的參數>)
<模板字符串> 是由一系列的槽組成,用來控制修改字符串中嵌入值出現的位置,其基本思想是將format()方法的 <逗號分隔的參數> 中的參數按照序號關係替換到 <模板字符串> 的槽中.
槽用大括號{}表示,若是大括號中沒有序號,則按照位置順序替換:
html
>>> print('{}:計算機{}的CPU佔用率爲{}%'.format('2017-09-30', 'Python', 10)) 2017-09-30:計算機Python的CPU佔用率爲10%
若是大括號中指定了使用參數的序號,按照序號對應參數替換.參數從0開始編號:python
>>> print('{1}:計算機{0}的CPU佔用率爲{2}%.'.format('python', '2017-09-30', 10)) 2017-09-30:計算機python的CPU佔用率爲10%.
除了經過序號來指定填充的參數外,還能夠經過關鍵字參數,下標,字典的key和對象的屬性來填充code
>>> print('{date}:計算機{process}的CPU佔用率爲{per}%.'.format(date='2017-09-30', process='python', per=10)) # 關鍵字參數 2017-09-30:計算機python的CPU佔用率爲10%. >>> print('I am {arg[0]}, I love {arg[1]}'.format(arg=arg)) # 下標 I am Liu, I love python >>> person = {'name': 'Liu', 'age': 24, 'job': 'Pythoneer'} >>> print('I am {person[name]}, {person[age]} years old, a {person[job]}.'.format(person=person)) I am Liu, 24 years old, a Pythoneer. Class Person(): def __init__(self): self.name, self.age, self.job = 'Liu', 24, 'Pythoneer' >>> me = Person() >>> print('I am {me.name}, {me.age} years old, a {me.job}'.format(me=me)) I am Liu, 24 years old, a Pythoneer.
format()方法中 <模板字符串> 的槽除了包含參數序號,還能夠包括格式控制符.此時,槽的內部樣式以下:
{ <參數序號> : <格式控制符> }
其中, <格式控制符> 用來控制參數顯示時的格式.
<格式控制符> 包括: <填充> <對齊> <寬度> ,<.精度> <類型> 6個字段,這些字段都是可選的,能夠組合使用.
<填充> , <對齊> 和 <寬度> 是3個相關字段.
orm
>>> s = 'PYTHON' >>> '{:30}'.format(s) 'PYTHON ' >>> '{:>30}'.format(s) ' PYTHON' >>> '{:*^30}'.format(s) '************PYTHON************' >>> '{:-^30}'.format(s) '------------PYTHON------------' >>> '{:5}'.format(s) 'PYTHON'
>>> '{:-^20,}'.format(123456789) '----123,456,789-----' >>>'{:-^20}'.format(123456789) #對比輸出 '-----123456789------' >>> '{:-^20,}'.format(12345.67890) '----12,345.6789-----'
>>> '{:.2f}'.format(12345.67890) '12345.68' >>> '{:H^20.3f}'.format(12345.67890) 'HHHHH12345.679HHHHHH' >>> '{:.4}'.format('PYTHON') 'PYTH'
>>> '{0:b}, {0:c}, {0:d}, {0:o}, {0:x}, {0:X}'.format(425) '110101001, Ʃ, 425, 651, 1a9, 1A9'
對於浮點數類型,輸出格式包括4種:
e: 輸出浮點數對應的小寫字母e的指數形式;
E: 輸出浮點數對應的大寫字母E的指數形式;
f: 輸出浮點數的標準浮點形式;
%: 輸出浮點數的百分比形式;
浮點數輸出是儘可能是用<.精度>表示小數部分的寬度,有助於更好控制輸出格式.htm
>>> '{0:e}, {0:E}, {0:f}, {0:%}'.format(3.14) '3.140000e+00, 3.140000E+00, 3.140000, 314.000000%' >>> '{0:.2e}, {0:.2E}, {0:.2f}, {0:.2%}'.format(3.14) '3.14e+00, 3.14E+00, 3.14, 314.00%'
轉義{和}符號
使用{}對大括號進行轉義對象
>>> 'hello {}, {{}}'.format('world') 'hello world, {}'
處理時間對象blog
>>> from datetime import datetime >>> '{:%Y-%m-%d %X}'.format(datetime.now()) '2017-09-30 16:24:29'
參考官方文檔中對時間的格式化字符.
一個快捷方法文檔
>>> a, b = 'Life', 'Python' >>> f'{a} is short, you need {b}' 'Life is short, you need Python'