Python實(shí)現(xiàn)格式化輸出的實(shí)例詳解
一、format格式輸出字符串
使用 % 操作符對各種類型的數(shù)據(jù)進(jìn)行格式化輸出,這是早期 Python提供的方法。
字符串類型(str)提供了 format() 方法對字符串進(jìn)行格式化。format() 方法的語法格式如下:
str.format(args)
在該方法中,str 用于指定字符串的顯示樣式;args 用于指定要進(jìn)行格式轉(zhuǎn)換的項(xiàng),如果有多項(xiàng),之間有逗號(hào)進(jìn)行分割。
在創(chuàng)建顯示樣式模板時(shí),需要使用{}和:來指定占位符,其完整的語法格式如下:
{ [index][ : [ [fill] align] [sign] [#] [width] [.precision] [type] ] }
格式中用 [] 括起來的參數(shù)都是可選參數(shù),即可以使用,也可以不使用。各個(gè)參數(shù)的含義如下:
- index:指定:后邊設(shè)置的格式要作用到args中第幾個(gè)參數(shù)值,參數(shù)的索引值從 0 開始。如果省略此選項(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ù)的對齊方式,具體的對齊方式如表1所示。
表 1 align參數(shù)及含義
| 字符 | 含義 |
|---|---|
| < | 數(shù)據(jù)左對齊 |
| > | 數(shù)據(jù)右對齊 |
| = | 數(shù)據(jù)右對齊,同時(shí)將符號(hào)放置在填充內(nèi)容的最左側(cè),該選項(xiàng)只對數(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) |
| # | 對于二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù),使用此參數(shù),各進(jìn)制數(shù)前會(huì)分別顯示 0b、0o、0x前綴;反之則不顯示前綴 |
表 3 type占位符類型及含義
| 字符 | 含義 |
|---|---|
| s | 對字符串類型格式化 |
| d | 十進(jìn)制整數(shù) |
| c | 將十進(jìn)制整數(shù)自動(dòng)轉(zhuǎn)換成對應(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í)際開發(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():
# 通過變量設(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!
實(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)) # 右對齊 (默認(rèn), 寬度為10)
print("|{:<10d}|".format(13)) # 左對齊 (寬度為10)
print("|{:^10d}|".format(13)) # 中間對齊 (寬度為10)
print("{}今年{{25}}歲了".format("張三")) # 使用大括號(hào) {} 來轉(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ù)的輸出
簡單提示:
- %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ù)輸出
簡單提示:
- %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、字符串輸出
簡單提示:
- %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
實(shí)例3.4、格式化輸出用戶信息
編寫程序,調(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():
# 通過變量設(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ù)點(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)) # 右對齊 (默認(rèn), 寬度為10)
print("|{:<10d}|".format(13)) # 左對齊 (寬度為10)
print("|{:^10d}|".format(13)) # 中間對齊 (寬度為10)
print("{}今年{{25}}歲了".format("張三")) # 使用大括號(hào) {} 來轉(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') # 右對齊,取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é)計(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格式化輸出的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)隨機(jī)選擇元素功能
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)隨機(jī)選擇元素功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Python定時(shí)發(fā)送天氣預(yù)報(bào)郵件代碼實(shí)例
這篇文章主要介紹了Python定時(shí)發(fā)送天氣預(yù)報(bào)郵件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Python使用sqlite3模塊內(nèi)置數(shù)據(jù)庫
這篇文章主要介紹了Python使用sqlite3模塊內(nèi)置數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
python?web.py啟動(dòng)https端口的方式
這篇文章主要介紹了python?web.py啟動(dòng)https端口,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Django 解決上傳文件時(shí),request.FILES為空的問題
這篇文章主要介紹了Django 解決上傳文件時(shí),request.FILES為空的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python利用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題實(shí)例詳解
這篇文章主要介紹了Python利用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題,結(jié)合實(shí)例形式詳細(xì)分析了Python使用神經(jīng)網(wǎng)絡(luò)解決非線性回歸問題的相關(guān)原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-07-07

