Python實現(xiàn)格式化輸出的實例詳解
一、format格式輸出字符串
使用 % 操作符對各種類型的數(shù)據(jù)進(jìn)行格式化輸出,這是早期 Python提供的方法。
字符串類型(str)提供了 format() 方法對字符串進(jìn)行格式化。format() 方法的語法格式如下:
str.format(args)
在該方法中,str 用于指定字符串的顯示樣式;args 用于指定要進(jìn)行格式轉(zhuǎn)換的項,如果有多項,之間有逗號進(jìn)行分割。
在創(chuàng)建顯示樣式模板時,需要使用{}和:來指定占位符,其完整的語法格式如下:
{ [index][ : [ [fill] align] [sign] [#] [width] [.precision] [type] ] }
格式中用 [] 括起來的參數(shù)都是可選參數(shù),即可以使用,也可以不使用。各個參數(shù)的含義如下:
- index:指定:后邊設(shè)置的格式要作用到args中第幾個參數(shù)值,參數(shù)的索引值從 0 開始。如果省略此選項,則會根據(jù) args中參數(shù)的先后順序自動分配。
- fill:指定空白處填充的字符。注意,當(dāng)填充字符為逗號(,),且作用于整數(shù)或浮點數(shù)時,該整數(shù)(或浮點數(shù))會以逗號分隔的形式輸出,如1000000會輸出為1,000,000。
- align:指定數(shù)據(jù)的對齊方式,具體的對齊方式如表1所示。
表 1 align參數(shù)及含義
字符 | 含義 |
---|---|
< | 數(shù)據(jù)左對齊 |
> | 數(shù)據(jù)右對齊 |
= | 數(shù)據(jù)右對齊,同時將符號放置在填充內(nèi)容的最左側(cè),該選項只對數(shù)字類型有效 |
^ | 數(shù)據(jù)居中,此選項需和 width 參數(shù)一起使用 |
表 2 sign參數(shù)以含義
字符 | 含義 |
---|---|
+ | 正數(shù)前加正號,負(fù)數(shù)前加負(fù)號 |
- | 正數(shù)前不加正號,負(fù)數(shù)前加負(fù)號 |
空格 | 正數(shù)前加空格,負(fù)數(shù)前加負(fù)號 |
# | 對于二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù),使用此參數(shù),各進(jìn)制數(shù)前會分別顯示 0b、0o、0x前綴;反之則不顯示前綴 |
表 3 type占位符類型及含義
字符 | 含義 |
---|---|
s | 對字符串類型格式化 |
d | 十進(jìn)制整數(shù) |
c | 將十進(jìn)制整數(shù)自動轉(zhuǎn)換成對應(yīng)的 Unicode 字符 |
e 或者 E | 轉(zhuǎn)換成科學(xué)計數(shù)法后,再格式化輸出 |
g 或 G | 自動在 e 和 f(或 E 和 F)中切換 |
b | 將十進(jìn)制數(shù)自動轉(zhuǎn)換成二進(jìn)制表示,再格式化輸出 |
o | 將十進(jìn)制數(shù)自動轉(zhuǎn)換成八進(jìn)制表示,再格式化輸出 |
x 或者 X | 將十進(jìn)制數(shù)自動轉(zhuǎn)換成十六進(jìn)制表示,再格式化輸出 |
f 或者 F | 轉(zhuǎn)換為浮點數(shù)(默認(rèn)小數(shù)點后保留 6 位),再格式化輸出 |
% | 顯示百分比(默認(rèn)顯示小數(shù)點后 6 位) |
二、format格式輸出字符串實例
實例1、網(wǎng)站名稱
def func1(): str = "網(wǎng)站名稱:{:>20s}\t網(wǎng)址:{:s}" print(str.format("Python中文網(wǎng)", "http://www.python-china.com/")) if __name__ == '__main__': func1()
輸出結(jié)果為:
網(wǎng)站名稱: Python中文網(wǎng) 網(wǎng)址:http://www.python-china.com/
實例2、數(shù)值格式化為不同的形式
在實際開發(fā)中,數(shù)值類型有多種顯示需求,比如貨幣形式、百分比形式等,使用 format() 方法可以將數(shù)值格式化為不同的形式。
def func2(): # 以貨幣形式顯示 print("貨幣形式:{:,d}".format(1000000)) # 科學(xué)計數(shù)法表示 print("科學(xué)計數(shù)法:{:E}".format(1200.12)) # 以十六進(jìn)制表示 print("100的十六進(jìn)制:{:#x}".format(100)) # 輸出百分比形式 print("0.01的百分比表示:{:.0%}".format(0.01)) if __name__ == '__main__': # func1() func2()
輸出結(jié)果為:
貨幣形式:1,000,000
科學(xué)計數(shù)法:1.200120E+03
100的十六進(jìn)制:0x64
0.01的百分比表示:1%
實例3、{}中不設(shè)參數(shù)
def func3(): print("{} {}".format("hello", "world")) # 不設(shè)置指定位置,按默認(rèn)順序 print("{0} {1}".format("hello", "world")) # 設(shè)置指定位置 print("{1} {0} {1}".format("hello", "world")) # 設(shè)置指定位置 if __name__ == '__main__': # func1() # func2() func3()
輸出結(jié)果為:
hello world
hello world
world hello world
實例4、 {}中設(shè)參數(shù)
def func4(): # 通過變量設(shè)置參數(shù) print("My name is {name},and I am {age} years old!".format(name="zhangsan", age="25")) # 通過字典設(shè)置參數(shù),需要解包 info = {"name": "zhangsan", "age": "25"} print("My name is {name},and I am {age} years old!".format(**info)) # 通過列表索引設(shè)置參數(shù) msg = ["zhangsan", "25"] print("My name is {0[0]},and I am {0[1]} years old!".format(msg)) if __name__ == '__main__': # func1() # func2() # func3() func4()
輸出結(jié)果為:
My name is zhangsan,and I am 25 years old!
My name is zhangsan,and I am 25 years old!
My name is zhangsan,and I am 25 years old!
實例5、str.format() 格式化數(shù)字
def func5(): print("{:.2f}".format(3.1415926)) # 保留小數(shù)點后兩位 print("{:+.2f}".format(3.1415926)) # 帶符號保留小數(shù)點后兩位 print("{:+.2f}".format(-1)) # 帶符號保留小數(shù)點后兩位 print("{:.0f}".format(2.71828)) # 不帶小數(shù) print("{:0>2d}".format(5)) # 數(shù)字補(bǔ)零 (填充左邊, 寬度為2) print("{:x<4d}".format(5)) # 數(shù)字補(bǔ)x (填充右邊, 寬度為4) print("{:x<4d}".format(10)) # 數(shù)字補(bǔ)x (填充右邊, 寬度為4) print("{:,}".format(1000000)) # 以逗號分隔的數(shù)字格式 print("{:.2%}".format(0.25)) # 百分比格式 print("{:.2e}".format(1000000000)) # 指數(shù)記法 print("|{:>10d}|".format(13)) # 右對齊 (默認(rèn), 寬度為10) print("|{:<10d}|".format(13)) # 左對齊 (寬度為10) print("|{:^10d}|".format(13)) # 中間對齊 (寬度為10) print("{}今年{{25}}歲了".format("張三")) # 使用大括號 {} 來轉(zhuǎn)義大括號 if __name__ == '__main__': # func1() # func2() # func3() # func4() func5()
輸出結(jié)果為:
3.14
+3.14
-1.00
3
05
5xxx
10xx
1,000,000
25.00%
1.00e+09
| 13|
|13 |
| 13 |
張三今年{25}歲了
Process finished with exit code 0
三、%格式化輸出實例
實例3.1、整數(shù)的輸出
簡單提示:
- %o —— oct 八進(jìn)制
- %d —— dec 十進(jìn)制(digit )
- %x —— hex 十六進(jìn)制
def func6(): print('%o' % 20) print('%d' % 20) print('%x' % 20) if __name__ == '__main__': # func1() # func2() # func3() # func4() # func5() func6()
輸出結(jié)果為:
24
20
14
實例3.2、 浮點數(shù)輸出
簡單提示:
- %f —— float 保留小數(shù)點后面六位有效數(shù)字
- %.3f,保留3位小數(shù)位
- %e —— 保留小數(shù)點后面六位有效數(shù)字,指數(shù)形式輸出
- %.3e,保留3位小數(shù)位,使用科學(xué)計數(shù)法
- %g —— 在保證六位有效數(shù)字的前提下,使用小數(shù)方式,否則使用科學(xué)計數(shù)法
- %.3g,保留3位有效數(shù)字,使用小數(shù)或科學(xué)計數(shù)法
def func7(): print('%f' % 1.11) # 默認(rèn)保留6位小數(shù) print('%.1f' % 1.11) # 取1位小數(shù) print('%e' % 1.11) # 默認(rèn)6位小數(shù),用科學(xué)計數(shù)法 print('%.3e' % 1.11) # 取3位小數(shù),用科學(xué)計數(shù)法 print('%g' % 1111.1111) # 默認(rèn)6位有效數(shù)字 print('%.7g' % 1111.1111) # 取7位有效數(shù)字 print('%.2g' % 1111.1111) # 取2位有效數(shù)字,自動轉(zhuǎn)換為科學(xué)計數(shù)法 if __name__ == '__main__': # func1() # func2() # func3() # func4() # func5() # func6() func7()
輸出結(jié)果為:
1.110000
1.1
1.110000e+00
1.110e+00
1111.11
1111.111
1.1e+03
實例3.3、字符串輸出
簡單提示:
- %s —— string 字符串
- %10s —— 右對齊,占位符10位
- %-10s —— 左對齊,占位符10位
- %.2s —— 截取2位字符串
- %10.2s —— 10位占位符,截取兩位字符串
def func8(): print('%s' % 'hello world') # 字符串輸出 print('%20s' % 'hello world') # 右對齊,取20位,不夠則補(bǔ)位 print('%-20s' % 'hello world') # 左對齊,取20位,不夠則補(bǔ)位 print('%.2s' % 'hello world') # 取2位 print('%10.2s' % 'hello world') # 右對齊,取2位 print('%-10.2s' % 'hello world') # 左對齊,取2位 if __name__ == '__main__': # func1() # func2() # func3() # func4() # func5() # func6() # func7() func8()
輸出結(jié)果為:
hello world
hello world
hello world
he
he
he
實例3.4、格式化輸出用戶信息
編寫程序,調(diào)查用戶的姓名、年齡、職業(yè)和薪水,然后格式化輸出用戶信息,格式如下所示
------------info of 張三------------
Name:張三
Age:24
Job:計算機(jī)
Salary:52000
----------------end---------------
def func9(): name = input("Name:") age = int(input("Age:")) job = input("Job:") salary = int(input("Salary:")) msg = """ ------------info of %s------------ Name:%s Age:%d Job:%s Salary:%d ----------------end--------------- """ % (name, name, age, job, salary) print(msg) if __name__ == '__main__': # func1() # func2() # func3() # func4() # func5() # func6() # func7() # func8() func9()
輸出結(jié)果為:
Name:BLACKPINK
Age:18
Job:sing
Salary:6688
------------info of BLACKPINK------------
Name:BLACKPINK
Age:18
Job:sing
Salary:6688
----------------end---------------
四、完整程序
def func1(): str = "網(wǎng)站名稱:{:>20s}\t網(wǎng)址:{:s}" print(str.format("Python中文網(wǎng)", "http://www.python-china.com/")) def func2(): # 以貨幣形式顯示 print("貨幣形式:{:,d}".format(1000000)) # 科學(xué)計數(shù)法表示 print("科學(xué)計數(shù)法:{:E}".format(1200.12)) # 以十六進(jìn)制表示 print("100的十六進(jìn)制:{:#x}".format(100)) # 輸出百分比形式 print("0.01的百分比表示:{:.0%}".format(0.01)) def func3(): print("{} {}".format("hello", "world")) # 不設(shè)置指定位置,按默認(rèn)順序 print("{0} {1}".format("hello", "world")) # 設(shè)置指定位置 print("{1} {0} {1}".format("hello", "world")) # 設(shè)置指定位置 def func4(): # 通過變量設(shè)置參數(shù) print("My name is {name},and I am {age} years old!".format(name="zhangsan", age="25")) # 通過字典設(shè)置參數(shù),需要解包 info = {"name": "zhangsan", "age": "25"} print("My name is {name},and I am {age} years old!".format(**info)) # 通過列表索引設(shè)置參數(shù) msg = ["zhangsan", "25"] print("My name is {0[0]},and I am {0[1]} years old!".format(msg)) def func5(): print("{:.2f}".format(3.1415926)) # 保留小數(shù)點后兩位 print("{:+.2f}".format(3.1415926)) # 帶符號保留小數(shù)點后兩位 print("{:+.2f}".format(-1)) # 帶符號保留小數(shù)點后兩位 print("{:.0f}".format(2.71828)) # 不帶小數(shù) print("{:0>2d}".format(5)) # 數(shù)字補(bǔ)零 (填充左邊, 寬度為2) print("{:x<4d}".format(5)) # 數(shù)字補(bǔ)x (填充右邊, 寬度為4) print("{:x<4d}".format(10)) # 數(shù)字補(bǔ)x (填充右邊, 寬度為4) print("{:,}".format(1000000)) # 以逗號分隔的數(shù)字格式 print("{:.2%}".format(0.25)) # 百分比格式 print("{:.2e}".format(1000000000)) # 指數(shù)記法 print("|{:>10d}|".format(13)) # 右對齊 (默認(rèn), 寬度為10) print("|{:<10d}|".format(13)) # 左對齊 (寬度為10) print("|{:^10d}|".format(13)) # 中間對齊 (寬度為10) print("{}今年{{25}}歲了".format("張三")) # 使用大括號 {} 來轉(zhuǎn)義大括號 def func6(): print('%o' % 20) print('%d' % 20) print('%x' % 20) def func7(): print('%f' % 1.11) # 默認(rèn)保留6位小數(shù) print('%.1f' % 1.11) # 取1位小數(shù) print('%e' % 1.11) # 默認(rèn)6位小數(shù),用科學(xué)計數(shù)法 print('%.3e' % 1.11) # 取3位小數(shù),用科學(xué)計數(shù)法 print('%g' % 1111.1111) # 默認(rèn)6位有效數(shù)字 print('%.7g' % 1111.1111) # 取7位有效數(shù)字 print('%.2g' % 1111.1111) # 取2位有效數(shù)字,自動轉(zhuǎn)換為科學(xué)計數(shù)法 def func8(): print('%s' % 'hello world') # 字符串輸出 print('%20s' % 'hello world') # 右對齊,取20位,不夠則補(bǔ)位 print('%-20s' % 'hello world') # 左對齊,取20位,不夠則補(bǔ)位 print('%.2s' % 'hello world') # 取2位 print('%10.2s' % 'hello world') # 右對齊,取2位 print('%-10.2s' % 'hello world') # 左對齊,取2位 def func9(): name = input("Name:") age = int(input("Age:")) job = input("Job:") salary = int(input("Salary:")) msg = """ ------------info of %s------------ Name:%s Age:%d Job:%s Salary:%d ----------------end--------------- """ % (name, name, age, job, salary) print(msg) if __name__ == '__main__': print("------func1------") func1() print("------func2------") func2() print("------func3------") func3() print("------func4------") func4() print("------func5------") func5() print("------func6------") func6() print("------func7------") func7() print("------func8------") func8() print("------func9------") func9()
輸出結(jié)果為:
D:\SoftWare\Python\Anaconda3\envs\spider\python.exe E:/Document/programmLanguageExper/Python/spider/pythonBase/python基礎(chǔ).py
------func1------
網(wǎng)站名稱: Python中文網(wǎng) 網(wǎng)址:http://www.python-china.com/
------func2------
貨幣形式:1,000,000
科學(xué)計數(shù)法:1.200120E+03
100的十六進(jìn)制:0x64
0.01的百分比表示:1%
------func3------
hello world
hello world
world hello world
------func4------
My name is zhangsan,and I am 25 years old!
My name is zhangsan,and I am 25 years old!
My name is zhangsan,and I am 25 years old!
------func5------
3.14
+3.14
-1.00
3
05
5xxx
10xx
1,000,000
25.00%
1.00e+09
| 13|
|13 |
| 13 |
張三今年{25}歲了
------func6------
24
20
14
------func7------
1.110000
1.1
1.110000e+00
1.110e+00
1111.11
1111.111
1.1e+03
------func8------
hello world
hello world
hello world
he
he
he
------func9------
Name:BLACKPINK
Age:18
Job:SING
Salary:6686
------------info of BLACKPINK------------
Name:BLACKPINK
Age:18
Job:SING
Salary:6686
----------------end---------------
Process finished with exit code 0
以上就是Python實現(xiàn)格式化輸出的實例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python格式化輸出的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pytorch方法測試詳解——歸一化(BatchNorm2d)
今天小編就為大家分享一篇pytorch方法測試詳解——歸一化(BatchNorm2d),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01解決torch.autograd.backward中的參數(shù)問題
今天小編就為大家分享一篇解決torch.autograd.backward中的參數(shù)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python機(jī)器學(xué)習(xí)三大件之一numpy
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)三大件之一numpy,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好地幫助喲.需要的朋友可以參考下2021-05-05詳解從Django Allauth中進(jìn)行登錄改造小結(jié)
這篇文章主要介紹了從 Django Allauth 中進(jìn)行登錄改造小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Python實戰(zhàn)實現(xiàn)爬取天氣數(shù)據(jù)并完成可視化分析詳解
這篇文章主要和大家分享一個用Python實現(xiàn)的小功能:獲取天氣數(shù)據(jù),進(jìn)行可視化分析,帶你直觀了解天氣情況!感興趣的小伙伴可以學(xué)習(xí)一下2022-06-06python創(chuàng)建ArcGIS shape文件的實現(xiàn)
今天小編就為大家分享一篇python創(chuàng)建ArcGIS shape文件的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12Selenium 模擬瀏覽器動態(tài)加載頁面的實現(xiàn)方法
這篇文章主要介紹了Selenium 模擬瀏覽器動態(tài)加載頁面的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05