Python格式化輸出

“%”的使用

格式符 描述
%s 字符串 (采用str()的顯示)
%r 字符串 (采用repr()的顯示)
%c 單個(gè)字符及其ASCII碼
%u 整數(shù)(無符號)
%b 二進(jìn)制整數(shù)
%o 八進(jìn)制數(shù)(無符號)
%d 十進(jìn)制整數(shù)
%i 十進(jìn)制整數(shù)
%x 十六進(jìn)制數(shù)(無符號)
%X 十六進(jìn)制數(shù)大寫(無符號)
%e 指數(shù) (基底寫為e),用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
%E 指數(shù) (基底寫為E)掖疮,作用同%e
%f 浮點(diǎn)數(shù)初茶,可指定小數(shù)點(diǎn)后的精度
%g %f和%e的簡寫颗祝,指數(shù)(e)或浮點(diǎn)數(shù) (根據(jù)顯示長度)
%G %F和%E的簡寫浊闪,指數(shù)(E)或浮點(diǎn)數(shù) (根據(jù)顯示長度)
%p 用十六進(jìn)制數(shù)格式化變量的地址
%% 轉(zhuǎn)義,字符"%"
字符串輸出(%s)

%10s——右對齊,占位符10位
%-10s——左對齊螺戳,占位符10位
%.2s——截取2位字符串
%10.2s——10位占位符搁宾,截取兩位字符串

# 字符串輸出
print('%s' % 'hello world')    # 結(jié)果:hello world
# 右對齊,取20位倔幼,不夠則補(bǔ)位
print('%20s' % 'hello world')    # 結(jié)果:         hello world
# 左對齊盖腿,取20位,不夠則補(bǔ)位
print('%-20s' % 'hello world')    # 結(jié)果:hello world         
# 取2位
print('%.2s' % 'hello world')    # 結(jié)果:he
# 右對齊损同,占位符10位翩腐,取2位
print('%10.2s' % 'hello world')    # 結(jié)果:        he
# 左對齊,占位符10位膏燃,取2位
print('%-10.2s' % 'hello world')    # 結(jié)果:he        
浮點(diǎn)數(shù)輸出(%f)

%f ——保留小數(shù)點(diǎn)后面六位有效數(shù)字
  %.3f茂卦,保留3位小數(shù)位
%e ——保留小數(shù)點(diǎn)后面六位有效數(shù)字,指數(shù)形式輸出
  %.3e组哩,保留3位小數(shù)位等龙,使用科學(xué)計(jì)數(shù)法
%g ——在保證六位有效數(shù)字的前提下,使用小數(shù)方式伶贰,否則使用科學(xué)計(jì)數(shù)法
  %.3g蛛砰,保留3位有效數(shù)字,使用小數(shù)或科學(xué)計(jì)數(shù)法

# 默認(rèn)保留6位小數(shù)
print('%f' % 1.11)    # 1.110000
#  取1位小數(shù)
print('%.1f' % 1.11)    # 結(jié)果:1.1
# 默認(rèn)6位小數(shù)黍衙,用科學(xué)計(jì)數(shù)法
print('%e' % 1.11)    # 結(jié)果:1.110000e+00
# 取3位小數(shù)泥畅,用科學(xué)計(jì)數(shù)法
print('%.3e' % 1.11)    # 結(jié)果:1.110e+00
# 默認(rèn)6位有效數(shù)字
print('%g' % 1111.1111)    # 結(jié)果:1111.11
# 取7位有效數(shù)字
print('%.7g' % 1111.1111)    # 結(jié)果:1111.111
# 取2位有效數(shù)字,自動轉(zhuǎn)換為科學(xué)計(jì)數(shù)法
print('%.2g' % 1111.1111)    # 結(jié)果:1.1e+03

format的使用

位置匹配

① 不帶參數(shù)琅翻,即{}
② 帶數(shù)字參數(shù)位仁,可調(diào)換順序,即{1}望迎、{2}
③ 帶關(guān)鍵字障癌,即{a}、{to}

# 不帶參數(shù)
print('{} {}'.format('hello','world'))    # 結(jié)果:hello world
# 帶數(shù)字參數(shù)
print('{0} {1}'.format('hello','world'))    # 結(jié)果:hello world
# 參數(shù)順序倒亂
print('{0} {1} {0}'.format('hello','world'))    # 結(jié)果:hello world hello
# 帶關(guān)鍵字參數(shù)
print('{a} {tom} {a}'.format(tom='hello',a='world'))    # 結(jié)果:world hello world
# 通過索引
coord = (3, 5)
print('X: {0[0]};  Y: {0[1]}'.format(coord))    # 結(jié)果:'X: 3;  Y: 5'
# 通過key鍵參數(shù)
a = {'a': 'test_a', 'b': 'test_b'}
print('X: {0[a]};  Y: {0[b]}'.format(a))    # 結(jié)果:'X: test_a;  Y: test_b'
格式轉(zhuǎn)換
符號 描述
'b' 二進(jìn)制辩尊。將數(shù)字以2為基數(shù)進(jìn)行輸出
'c' 字符涛浙。在打印之前將整數(shù)轉(zhuǎn)換成對應(yīng)的Unicode字符串
'd' 十進(jìn)制整數(shù)。將數(shù)字以10為基數(shù)進(jìn)行輸出
'o' 八進(jìn)制。將數(shù)字以8為基數(shù)進(jìn)行輸出
'x' 十六進(jìn)制轿亮。將數(shù)字以16為基數(shù)進(jìn)行輸出疮薇,9以上的位數(shù)用小寫字母
'e' 冪符號。用科學(xué)計(jì)數(shù)法打印數(shù)字我注。用'e'表示冪
'g' 一般格式按咒。將數(shù)值以fixed-point格式輸出。當(dāng)數(shù)值特別大的時(shí)候但骨,用冪形式打印
'n' 數(shù)字励七。當(dāng)值為整數(shù)時(shí)和'd'相同,值為浮點(diǎn)數(shù)時(shí)和'g'相同奔缠。不同的是它會根據(jù)區(qū)域設(shè)置插入數(shù)字分隔符
'%' 百分?jǐn)?shù)掠抬。將數(shù)值乘以100然后以fixed-point('f')格式打印,值后面會有一個(gè)百分號
print('{0:b}'.format(3))    # 結(jié)果:11
print('{:c}'.format(20))    # 結(jié)果:?
print('{:d}'.format(20))    # 結(jié)果:20
print('{:o}'.format(20))    # 結(jié)果:24
print('{:x}'.format(20))    # 結(jié)果:14
print('{:e}'.format(20))    # 結(jié)果:2.000000e+01
print('{:g}'.format(20.1))    # 結(jié)果:20.1
print('{:f}'.format(20))    # 結(jié)果:20.000000
print('{:n}'.format(20))    # 結(jié)果:20
print('{:%}'.format(20))    # 結(jié)果:2000.000000%
高階用法

進(jìn)制轉(zhuǎn)換

print("int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42))
# 輸出:int: 42;  hex: 2a;  oct: 52;  bin: 101010

print("int: {0:d};  hex: {0:#x};  oct: {0:#o};  bin: {0:#b}".format(42))
# 在前面加“#”校哎,則帶進(jìn)制前綴
# 輸出:int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010

左中右對齊及位數(shù)補(bǔ)全
㈠ 對齊

符號 描述
< 左對齊(默認(rèn))
> 右對齊
^ 居中對齊
= 在小數(shù)點(diǎn)后進(jìn)行補(bǔ)齊(只用于數(shù)字)

㈡ 取位數(shù) “{:4s}”两波、"{:.2f}"等

# 默認(rèn)左對齊
print('{} and {}'.format('hello','world'))    # 結(jié)果:hello and world
# 取10位左對齊,取10位右對齊
print('{:10s} and {:>10s}'.format('hello','world'))   # 結(jié)果:hello      and      world
# 取10位中間對齊
print('{:^10s} and {:^10s}'.format('hello','world'))    # 結(jié)果:  hello    and   world   

# 取2位小數(shù)
print('{} is {:.2f}'.format(1.123,1.123))    # 結(jié)果:1.123 is 1.12
# 取2位小數(shù)闷哆,右對齊腰奋,取10位
print('{0} is {0:>10.2f}'.format(1.123))    # 結(jié)果:1.123 is       1.12

# 左對齊
print('{:<30}'.format('left aligned'))     # 結(jié)果:'left aligned                  '
# 右對齊
print('{:>30}'.format('right aligned'))    # 結(jié)果:'                 right aligned'
# 中間對齊
print('{:^30}'.format('centered'))    # 結(jié)果:'           centered           '
# 使用“*”填充
print('{:*^30}'.format('centered'))    # 結(jié)果:'***********centered***********'
# 還有“=”只能應(yīng)用于數(shù)字,這種方法可用“>”代替
print('{:0=30}'.format(11))    # '000000000000000000000000000011'

正負(fù)符號顯示
正負(fù)符號顯示 %+f, %-f, 和 % f的用法

# 總是顯示符號
print('{:+f}; {:+f}'.format(3.14, -3.14))    # '+3.140000; -3.140000'
# 若是+數(shù)抱怔,則在前面留空格
print('{: f}; {: f}'.format(3.14, -3.14))    # ' 3.140000; -3.140000'
# -數(shù)時(shí)顯示-劣坊,與'{:f}; {:f}'一致
print('{:-f}; {:-f}'.format(3.14, -3.14))    # '3.140000; -3.140000'

百分?jǐn)?shù)%

points = 19
total = 22
print('Correct answers: {:.2%}'.format(points/total))    # 'Correct answers: 86.36%'

逗號作為千位分隔符,金額表示

print('{:,}'.format(1234567890))    # '1,234,567,890'
format變形用法

在字符串前加f以達(dá)到格式化的目的野蝇,在{}里加入對象讼稚,此為format的另一種形式

name = 'jack'
age = 18
sex = 'man'
job = "IT"
salary = 9999.99

print(f'my name is {name.capitalize()}.')    # my name is Jack.
print(f'I am {age:*^10} years old.')    # I am ****18**** years old.
print(f'I am a {sex}')    # I am a man
print(f'My salary is {salary:10.3f}')    # My salary is   9999.990
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市绕沈,隨后出現(xiàn)的幾起案子锐想,更是在濱河造成了極大的恐慌,老刑警劉巖乍狐,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赠摇,死亡現(xiàn)場離奇詭異,居然都是意外死亡浅蚪,警方通過查閱死者的電腦和手機(jī)藕帜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惜傲,“玉大人洽故,你說我怎么就攤上這事〉撂埽” “怎么了时甚?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵隘弊,是天一觀的道長。 經(jīng)常有香客問我荒适,道長梨熙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任刀诬,我火速辦了婚禮咽扇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陕壹。我一直安慰自己质欲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布帐要。 她就那樣靜靜地躺著把敞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榨惠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天盛霎,我揣著相機(jī)與錄音赠橙,去河邊找鬼。 笑死愤炸,一個(gè)胖子當(dāng)著我的面吹牛期揪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播规个,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼凤薛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了诞仓?” 一聲冷哼從身側(cè)響起缤苫,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎墅拭,沒想到半個(gè)月后活玲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谍婉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年舒憾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片穗熬。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镀迂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唤蔗,到底是詐尸還是另有隱情探遵,我是刑警寧澤唧瘾,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站别凤,受9級特大地震影響饰序,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜规哪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一求豫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诉稍,春花似錦蝠嘉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至服爷,卻和暖如春杜恰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仍源。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工心褐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笼踩。 一個(gè)月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓逗爹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嚎于。 傳聞我的和親對象是個(gè)殘疾皇子掘而,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355