在python中我們會遇到一個問題,問題是如何輸出格式化的字符串。我們經(jīng)常會輸出類似'親愛的xxx你好!你xx月的話費是xx,余額是xx'之類的字符串,而xxx的內(nèi)容都是根據(jù)變量變化的,所以,需要一種簡便的格式化字符串的方式。
在python中,我們用%實現(xiàn)格式化字符串。
語法
我們舉個例子來說明格式化字符串的語法
\>>> 'Hello, %s' % 'world'
'Hello, world'
\>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
在字符串內(nèi)部,%s表示用字符串替換,%d表示用整數(shù)替換,有幾個%占位符,后面就跟幾個變量或者值,順序要對應(yīng)好。如果只有一個%,括號可以省略。
字符串格式化符號
? ? ? ? ? %c 格式化字符及其ASCII碼
? ? ? ? ? %s? ? 格式化字符串
? ? ? ? ? %d? ? 格式化整數(shù)
? ? ? ? ? %u? ? 格式化無符號整型
? ? ? ? ? %o? ? 格式化無符號八進(jìn)制數(shù)
? ? ? ? ? %x? ? 格式化無符號十六進(jìn)制數(shù)
? ? ? ? ? %X? ? 格式化無符號十六進(jìn)制數(shù)(大寫)
? ? ? ? ? %f? ? 格式化浮點數(shù)字,可指定小數(shù)點后的精度
? ? ? ? ? %e? ? 用科學(xué)計數(shù)法格式化浮點數(shù)
? ? ? ? ? %E? ? 作用同%e,用科學(xué)計數(shù)法格式化浮點數(shù)
? ? ? ? ? %g? ? %f和%e的簡寫
? ? ? ? ? %G? ? %f 和 %E 的簡寫
? ? ? ? ? %p? ? 用十六進(jìn)制數(shù)格式化變量的地址
格式化操作符輔助指令?
? ? ?符號? ? ? ? ? ? ? ? ? ? ? 功能?
? ? ? ? *? ? ?定義寬度或者小數(shù)點精度 - 用做左對齊 + 在正數(shù)前面顯示加號( + ) 在正數(shù)前面顯示空格
? ? ? ? \#? ? 在八進(jìn)制數(shù)前面顯示零('0'),在十六進(jìn)制前面顯示'0x'或者'0X'(取決于用的是'x'還是'X')
? ? ? ? 0? ? 顯示的數(shù)字前面填充`0`而不是默認(rèn)的空格
? ? ? ? %? ? '%%'輸出一個單一的'%'
? ? ? ? (var) 映射變量(字典參數(shù))
? ? ? ? m.n.? m是顯示的最小總寬度,n是小數(shù)點后的位數(shù)(如果可用的話)
是否補(bǔ)0和整數(shù)與小數(shù)的位數(shù)的幾種情況
%0xd表示將整數(shù)用0補(bǔ)足到x位
整數(shù)的位數(shù)比x小時,用0補(bǔ)足
eg:
? ? ? ? ? ? >>> "%03d" %33
? ? ? ? ? ? '033'
整數(shù)的位數(shù)比x大時,直接輸出
eg:
? ? ? ? ? ? >>> "%03d" %12345
? ? ? ? ? ? '12345'
%xd表示將整數(shù)用空格補(bǔ)足到x位
如果整數(shù)的位數(shù)比x小時,用空格補(bǔ)足
eg:
? ? ? ? ? ? \>>> "%6d" %123
? ? ? ? ? ? '? 123'
如果整數(shù)的位數(shù)比x大時,直接輸出
eg:
? ? ? ? ? ? \>>> "%3d" %12345
? ? ? ? ? ? '12345'
%.xf表示將小數(shù)中小數(shù)點后面的位數(shù)固定到x位
如果小數(shù)的位數(shù)比x大,則保留x位小數(shù)
eg:
? ? ? ? ? ? \>>> "%.3f" % 3.1415926
? ? ? ? ? ? '3.142'
如果小數(shù)的位數(shù)比x小,則用0補(bǔ)足
eg:
? ? ? ? ? ? \>>> "%.4f" % 3.1
? ? ? ? ? ? '3.1000'
如果我們不太確定用什么,那么用%s是最保險的,它會把任何數(shù)據(jù)類型轉(zhuǎn)換為字符串。