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

