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ù)字補零 (填充左邊, 寬度為2)
print("{:x<4d}".format(5)) # 數(shù)字補x (填充右邊, 寬度為4)
print("{:x<4d}".format(10)) # 數(shù)字補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位,不夠則補位
print('%-20s' % 'hello world') # 左對齊,取20位,不夠則補位
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ù)字補零 (填充左邊, 寬度為2)
print("{:x<4d}".format(5)) # 數(shù)字補x (填充右邊, 寬度為4)
print("{:x<4d}".format(10)) # 數(shù)字補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位,不夠則補位
print('%-20s' % 'hello world') # 左對齊,取20位,不夠則補位
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-01
Python機(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-12
Python實戰(zhàn)實現(xiàn)爬取天氣數(shù)據(jù)并完成可視化分析詳解
這篇文章主要和大家分享一個用Python實現(xiàn)的小功能:獲取天氣數(shù)據(jù),進(jìn)行可視化分析,帶你直觀了解天氣情況!感興趣的小伙伴可以學(xué)習(xí)一下2022-06-06
python創(chuàng)建ArcGIS shape文件的實現(xiàn)
今天小編就為大家分享一篇python創(chuàng)建ArcGIS shape文件的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Selenium 模擬瀏覽器動態(tài)加載頁面的實現(xiàn)方法
這篇文章主要介紹了Selenium 模擬瀏覽器動態(tài)加載頁面的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05

