Python之路(1)format詳解
阿新 • • 發佈:2019-01-10
Str.format方法比之 %方法的優點:
1.傳入資料可以不限引數資料型別
2.引數位置可以不按照傳入順序,且單個引數可以輸出多次或者不輸出
3.強大的填充和對齊功能,完善的進位制轉換和精度控制
一:填充
#使用關鍵字填充
>>> #使用key填充
print('{name} today {action}'.format(name='jopen',action='play soccer'))
jopen today play soccer
#使用字典填充
>>> place={'where':'wuhan','country':'China'} >>> print('{place[where]} is a part of {place[contury]}'.format(place=place)) wuhan is a part of China
或者
>>> place={'where':'wuhan','country':'China'}
>>> print('{where} is a part of {contury}'.format(**place))
wuhan is a part of China
#使用索引填充
>>> print('{1} is {0}'.format('fruit','apple'))
apple is fruit
#通過物件屬性來填充
class Hello: def __init__(self,name1,name2): self.name1=name1; self.name2=name2 def __str__(self): return 'Hello {self.name1},I am {self.name2}'.format(self=self) print(str(Hello('Tom','Jopen')))
Hello Tom,I am Jopen
#多次使用引數和不使用傳入的引數
>>> print('{1} {1} {1},so many{1}'.format('apple','banana'))
banana banana banana,so manybanana
二:對齊與填充
對齊與填充經常一起使用
對齊:^、<、>分別是居中,左對齊,右對齊,後面頻寬度
居中:居中符號為:,後面跟填充的字元,只能是一個字元,不指定填充字元預設為空格
#左填充
>>> ('{:*>8}').format('Hello')
'***Hello'
#右填充
#中間對齊>>> ('{:*<8}').format('Hello') 'Hello***
>>> ('{:*^8}').format('Hello')
'*Hello**'
三:精度
#浮點數
>>> '{:.3f}'.format(3.1415926)
'3.142'
#字串
>>> '{:.3s}'.format('3.1415926')
'3.1'
四:進位制轉換
>>> '{:b}'.format(33)
'100001'
>>> '{:d}'.format(33)
'33'
>>> '{:o}'.format(33)
'41'
>>> '{:x}'.format(33)
'21'
b,d,o,x分別為二進位制,十進位制,八進位制,十六進位制
五:格式轉化
!s,!r,!a 對應str(), repr(),acdii()
>>> '{!s:*>8}'.format(8)
'*******8'
repr()將輸入轉化為直譯器讀取的形式!a我卻不能轉化為ascii碼,不知道哪裡出了問題.