format是python2.6新增的一個格式化字符串的方法,相對於老版的%格式方法,它有很多優點。
1.不需要理會數據類型的問題,在%方法中%s只能替代字符串類型
2.單個參數可以多次輸出,參數順序可以不相同
3.填充方式十分靈活,對齊方式十分強大
4.官方推薦用的方式,%方式將會在後面的版本被淘汰
format應用一:填充
(1)通過位置來填充字符串
print("hello {0} i am {1}".format('Kevin','Tom'))
# hello Kevin i am Tom
print('hello {} i am {}'.format('Kevin','Tom') )
# hello Kevin i am Tom
print('hello {0} i am {1} . my
name is {0}'.format('Kevin','Tom'))
my name is Kevin
foramt會把參數按位置順序來填充到字符串中,第一個參數是0,然後1 ……
也可以不輸入數字,這樣也會按順序來填充
同一個參數可以填充多次,這個是format比%先進的地方
(2)通過Key來填充
print('hello {name1} i am {name2}'.format(name1='Kevin',name2='Tom'))
(3)通過下標來填充
names=['Kevin','Tom']
print('hello {names[0]} i am {names[1]}'.format(names=names) )
#hello Kevin i am Tom
print('hello {0[0]} i am {0[1]}'.format(names))
# hello Kevin i am Tom
(4)通過字典的Key
names={'name':'Kevin','name2':'Tom'}
print ('hello {names[name]} i am {names[name2]}'.format(names=names))
(5)通過對象的屬性
class Names:
name1='Kevin'
name2='Tom'
print('hello {names.name1} i
am {names.name2}'.format(names=Names))
hello Kevin
i am Tom
(6)使用魔法參數
args=['lu']
kwargs = {'name1': 'Kevin', 'name2': 'Tom'}
print('hello {name1} {} i am {name2}'.format(*args, **kwargs))
二:格式轉換
三:對齊與填充
四:其他
(1)轉義{和}符號
print('{{ hello {0} }}'.format('Kevin'))
(2)format作為函數
f = 'hello {0} i am {1}'.format
print(f('Kevin','Tom'))
(3)格式化datetime
now=datetime.now()
print('{:%Y-%m-%d %X}'.format(now))
(4){}內嵌{}
print ('hello {0:>{1}} '.format('Kevin',50))
(5)嘆號的用法
!後面可以加s r a 分別對應str() repr() ascii()
作用是在填充前先用對應的函數來處理參數
print("{!s}".format('2'))
# 2
print("{!r}".format('2') )
# '2'