1. 程式人生 > 程式設計 >全網最細 Python 格式化輸出用法講解(推薦)

全網最細 Python 格式化輸出用法講解(推薦)

一、使用 print() 函式

在 Python 中,print() 函式支援格式化輸出,與 C 語言的 printf 類似。

1. 格式化輸出字串和整數

【示例1】輸出字串 AmoXiang,並計算、輸出它的字元長度

str1 = "%s.length = %d" % ("AmoXiang",len("AmoXiang"))
print(str1) # 輸出AmoXiang.length = 8

% 在字串中表示格式化操作符,它後面必須附加一個格式化符號,具體說明如下表所示。

在這裡插入圖片描述

%()元組可以包含一個或多個值,如變數或表示式,用來向字串中%操作符傳遞值,元組包含元素數量、順序都必須與字串中%操作符一一對應,否則將丟擲異常。%()元組必須位於字串的後面,否則無效。如果字串中只包含一個%操作符,那麼也可以直接傳遞值。例如:

str1 = "AmoXiang.length = %d" % len("AmoXiang")
print(str1) # 輸出AmoXiang.length = 8

2. 格式化輸出不同進位制數

【示例2】使用 print() 函式把數字輸出為十六進位制、十進位制、八進位制格式的字串。

num = 123
# 輸出:Hex = 7b Dec = 123 Oct=173
print("Hex = %x Dec = %d Oct=%o" % (num,num,num))

補充:整數型別包括十進位制整數、八進位制整數、十六進位制整數和二進位制整數。

十進位制的整數不能以 0 開頭。八進位制整數由 0~7 組成,逢八進一,以 0o 或 0O 開頭,例如:0o23十六進位制整數由 0~9 以及 a~f 組成,逢十六進一,以 0x 或 0X 開頭。例如:0x23二進位制整數由 0 和 1組成,逢二進一,以 0b 或 0B 開頭。例如:0b101關於進位制這個知識點不懂的讀者可以點選 進位制轉換 學習

3. 格式化輸出浮點數

【示例3】把數字輸出為不同格式的浮點數字符串。

PI = 3.141592653
print("pi1 = %10.3f" % PI) # 總寬度為10,小數位精度為3
print("pi2 = %.*f" % (3,PI)) # *表示從後面的元組中讀取3,定義精度
print("pi3 = %010.3f" % PI) # 用0填充空白
print("pi4 = %-10.3f" % PI) # 左對齊,總寬度10個字元,小數位精度為3
print("pi5 = %+f" % PI) # 在浮點數前面顯示正號

程式執行結果如下:

在這裡插入圖片描述

在格式化輸出數字或字串時,可以附加輔助指令來完善格式化操作。具體說明如下表所示:

在這裡插入圖片描述

二、使用 str.format() 方法

% 操作符是傳統格式化輸出的基本方法,從 Python 2.6 版本開始,為字串資料新增了一種格式化方法 str.format(),它通過 {} 操作符和 : 輔助指令來代替 % 操作符。
【示例1】通過位置索引值

print('{0} {1}'.format('Python',3.7)) # Python 3.7
print('{} {}'.format('Python',3.7)) # Python 3.7
print('{1} {0} {1}'.format('Python',3.7)) # 3.7 Python 3.7

在字串中可以使用 {} 作為格式化操作符。與 % 操作符不同的是,{} 操作符可以通過包含的位置值自定義引用值的位置,也可以重複引用。
【示例2】通過關鍵字索引值

# 輸出:Amo年齡是18歲。
print('{name}年齡是{age}歲。'.format(age=18,name="Amo"))

【示例3】通過下標進行索引

L = ["Jason",30]
# 輸出:Jason年齡是30歲。
print('{0[0]}年齡是{0[1]}歲。'.format(L))

通過使用 format() 函式這種便捷的 對映 方式,列表和元組可以 打散 成普通引數傳遞給 format() 方法,字典可以打散成關鍵字引數給方法。format() 方法包含豐富的格式限定符,附帶在 {} 操作符中 : 符號的後面。

1. 填充與對齊

: 符號後面可以附帶填充的字元,預設為空格, ^、<、> 分別表示居中、左對齊、右對齊,後面附頻寬度限定值。

【示例4】下面示例設計輸出 8 位字元,並分別設定不同的填充字元和值對齊方式。

print('{:>8}'.format('1')) # 總寬度為8,右對齊,預設空格填充
print('{:0>8}'.format('1')) # 總寬度為8,右對齊,使用0填充
print('{:a<8}'.format('1')) # 總寬度為8,左對齊,使用a填充

程式執行結果如下:
在這裡插入圖片描述

2. 精度與型別f

【示例5】f 與 float 型別資料配合使用

print('{:.2f}'.format(3.141592653)) # 輸出結果:3.14

其中 .2f 表示小數點後面的精度為 2,f 表示浮點數輸出。

3. 進位制數字輸出

【示例6】使用b、d、o、x 分別輸出二進位制、十進位制、八進位制、十六進位制數字。

num = 100
print('{:b}'.format(num)) # 1100100
print('{:d}'.format(num)) # 100
print('{:o}'.format(num)) # 144
print('{:x}'.format(num)) # 64

4. 千位分隔輸出

【示例7】使用逗號(,)輸出金額的千分位分隔符。

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

三、詳解 format() 函式

format()函式可以對資料進行格式化處理操作。語法格式如下:
在這裡插入圖片描述
format_spec為格式化解釋。當引數 format_spec 為空時,等同於函式 str(value) 的方式。value 為要轉換的資料。format_ spec 可以設定非常複雜的格式轉換引數,生成比較完備的資料格式處理模板。format_spec 的編寫方式如下形式:

format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]

format_spec 格式控制符可以分為文字對齊、填充值、標誌設定、格式化、型別轉換、千位符(數字分組)等主要應用。細化分類說明如下圖所示:

在這裡插入圖片描述

引數說明:
(1) fill(填充值):此處可以填寫任何字元,通常與align、width一起使用,實現指定位數字符填充,通常格式如圖1.2所示,填充效果及位置如圖1.3所示。

在這裡插入圖片描述

通常用 0、*、#、@ 等進行填充。如果不寫填充值,則使用預設填充值,預設填充值為空格。程式碼如下:

# 81@@@@@@@@
print(format(81,'@<10')) # 用@符號填充,寬度為10個空格
# @@@@@@@@81
print(format(81,'@>10')) # 用@符號填充,寬度為10個空格

(2) align(對齊方式):指在 width(數字寬度) 內輸出時的對齊方式,分別使用 <、>、^、= 4個符號表示左對齊、右對齊、居中對齊和數字填充(只用於數字,在符號後進行補齊)。
(3) width(數字寬度):指設定輸出字元寬度,如果資料的實際位數比 width 指定寬度值大,則使用資料實際的長度。如果該值的實際位數小於指定寬度,則位數將設定的 fill 值填充或設定的 0 值填充,如果沒有設定填充值,則用空格填充。

s = "PYTHON"
print(format(s,'10')) # 沒有標誌符,如果是字串則預設左對齊,不足寬度部分預設用空格填充
print(format(13.14,'10')) # 沒有標誌符,如果是數字則預設右對齊,不足寬度部分預設用空格填充
print(format(s,'0>10')) # 右對齊,不足指定寬度部分用0填充
print(format(s,'>04')) # 右對齊,因字元實際寬度大於指定寬度4,不用填充
print(format(s,'*>10')) # 右對齊,不足部分用"*"填充
print(format(s,'>010')) # 右對齊,不足部分用0填充
print(format(s,'>10')) # 右對齊,預設用空格填充
print(format(s,'<10')) # 左對齊,預設用空格填充
print(format(s,'<010')) # 左對齊,不足部分用0填充
print(format(s,'@^10')) # 中間對齊,不足部分用'@'填充,寬度為10個空格
print(format(13.14,'0<10')) # 左對齊,不足部分用0填充
print(format(13.14,'@^10')) # 中間對齊,不足部分用@填充
print(format(13.14,'0>10')) # 右對齊,不足部分用0填充
print(format(-13.14,'0=10')) # 右對齊,符號後面不足部分用0填充

程式執行結果如下:

全網最細 Python 格式化輸出用法講解(推薦)

(4) precision(精度):精度由小數點 . 開頭。對於浮點數,精度表示小數部分輸出的有效位數。對於字串,精度表示輸出的最大長度。precision(精度) 通常和 type(型別) 配合起來使用。
(5) type(型別):表示輸出字串、整數和浮點數型別的格式規則,預設為字元型 s。對於整數型別,輸出格式包括 7 種:

b:輸出整數的二進位制方式。c:輸出整數對應的 Unicode 字元。d:輸出整數的十進位制方式。n:輸出整數的十進位制方式。o:輸出整數的八進位制方式。x:輸出整數的小寫十六進位制方式。當值為整數時和 d 類似,值為浮點數時和 g 類似。不同之處在於 n 會使用當前區域設定來插入適當數字分隔字元。X:輸出整數的大寫十六進位制方式。

對於浮點數型別,輸出格式包括 7 種:

e:輸出浮點數對應的小寫字母 e 的指數形式。E:輸出浮點數對應的大寫字母 E 的指數形式。f:輸出浮點數的浮點表示形式,預設保留 6 位小數。F:輸出浮點數的浮點表示形式,預設保留 6 位小數,無窮大轉換成大寫字母 INF。g:自動調整將整數、浮點數轉換成浮點型或科學記數法表示(超過 6 位數用科學記數法),並將其格式化到指定位置(如果是科學計數則是 e)。G:自動調整將整數、浮點數轉換成浮點型或科學記數法表示(超過 6 位數用科學記數法),並將其格式化到指定位置(如果是科學計數則是 E)。%:輸出浮點數的百分形式。 運用一:格式轉換

使用 format() 函式可以轉換格式。如果 format() 函式的引數format_spec 未提供,則預設為將其他格式資料格式化為字元型,和呼叫 str(value) 效果相同。如:

import datetime

# 使用format()函式將浮點數轉換成字元,結果為:'3.14'
print(format(3.14))
# 使用str()函式將浮點數轉換成字元,結果為:'3.14'
print(str(3.14))
# 將日期格式化為字元,結果為:'2021-01-17 05:25:02'
print(format(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")))

設定引數 format_spec 的值,可以進行相應資料型別的格式化,字串可以提供的引數為 s。十進位制整型提供的引數為 d 和 n,二進位制的引數為 b,八進位制的引數為 o,十六進位制小寫的引數為 x,十六進位制大寫的引數為 X,ASIIC 碼的引數為 c,浮點數的引數為 f。以上格式化後的資料型別都為字元型,舉例如下:

print(format(12.2,'f')) # 轉換成浮點數,預設為小數保留6位,輸出:12.200000
print(format(12,'d')) # 轉換成十進位制,輸出:12
print(format(13)) # 不帶引數預設為十進位制,輸出:13
print(format(13,'n')) # 轉換成十進位制數,輸出:13
print(format(13,'b')) # 轉換成二進位制,輸出:1101
print(format(65,'c')) # 轉換Unicode成字元,輸出:A
print(format(97,'c')) # 轉換Unicode成字元,輸出:a
print(format(8750,'c')) # 轉換Unicode成字元,輸出:∮
print(format(12,'o')) # 轉換成八進位制,輸出:14
print(format(12,'x')) # 轉換成十六進位制小寫字母表示,輸出:c
print(format(12,'X')) # 轉換成十六進位制大寫字母表示,輸出:C

運用二:生成資料編號

利用 format() 函式實現資料編號。對資料進行編號,也是對字串格式化操作的一種方式,使用 format() 函式可以對字串進行格式化編號。只需設定填充字元(編號通常設定 0),設定對齊方式時可以使用 <、> 和 ^ 符號表示左對齊、右對齊和居中對齊,對齊填充的符號在 寬度 範圍內輸出時填充即可。對數字 1 進行 3 位編號,右對齊,需要設定 format() 函式的填充字元為 0,對齊方式為右對齊,寬度為 3。具體程式碼為:

print(format(1,'0>3')) # 輸出:001
print(format(1,'>03')) # 輸出:001
print(format(15,'0>5')) # 輸出:00015

要生成的編號通常比較複雜,如根據當天的日期建立編號,或者批量生成編號,或者將給定的批量資料中的數字轉換成位數固定的編號,下面給出實現編號的程式碼:

import datetime

# 時間+編號
wx = datetime.datetime.now().date()
now = datetime.datetime.now()
print(str(wx),format(1,'0>3')) # 年-月-日 +3位編號,輸出:2021-01-17 001
print(format(now,'%Y-%m-%d'),'%Y%m%d'),'NO' + format(1,'0>3')) # 年-月-日+NO+3位編號,輸出:20210117 NO001
print(format(now,'%d'),'0>3')) # 日期 +NO+3位編號,輸出:17 NO001
print(format(now,'%H%M'),'0>3')) # 時-+分 +NO+3位編號,輸出:1411 NO001

批量生成編號:

# 批量生成編號
for i in range(1,6):
 print(format(i,'0>2'))

程式執行結果如下:

在這裡插入圖片描述

# 格式化列表編號
# 對已有非編號數字進行格式化編號
nba = {1: '倫納德',2: '哈登',3: '喬治'}
for key,value in nba.items():
 print(format(key,'0>3'),value)

程式執行結果如下:

在這裡插入圖片描述

要實現巢狀編號,如A001-A005、B001-B005、C001-005 的巢狀編號,程式碼如下:

for i in range(65,69):
 for j in range(1,6):
 data = chr(i) + format(j,'0>3') + ' '
 print(data,end='')
 print()

程式執行結果如下:

在這裡插入圖片描述

運用三:格式化十進位制整數

對於不同的型別資料,format() 函式的引數 format_spec 提供的值都不一樣,對於十進位制整數,整型數值可以提供的引數有d、n。具體如下:

運用四:格

print(format(81,'8d')) # 8位整數顯示,不足部分整數前用空格填充
print(format(81,'+d')) # 格式化為帶符號整數顯示資料
print(format(-81,'8d')) # 格式化為8位帶符號整數顯示,補位空格放到符號前
print(format(81,'=8d')) # 格式化為8位正整數,用空格補位
print(format(-81,'=8d')) # 格式化為8位負整數,不足部分在負號後填充
print(format(81,'+8d')) # 格式化為8位正整數,不足部分在符號前填充
print(format(-81,'8d')) # 格式化為8位負整數,不足部分在符號前填充

print(format(81,'>10')) # 右對齊,寬度為10個字元
print(format(81,'<10')) # 左對齊,寬度為10個字元
print(format(81,'010')) # 用0填充空格,寬度為10個字元
print(format(81,'@<10')) # 用“@”填充空格,寬度為10個字元
print(format(81,'@>10')) # 用“@”填充空格,寬度為10個字元
print(format(+81,'=10')) # 右對齊,寬度為10個字元
print(format(81,'0^10')) # 用0填充空格,寬度為10個字元

s = 125
print(format(s,'>04')) # 右對齊,不足指定寬度部分用0填充
print(format(s,'*>10')) # 右對齊,不足指定寬度部分用“*”填充
print(format(s,'>010')) # 右對齊,指定0標誌位填充
print(format(s,'>10')) # 右對齊,沒指定填充值,用預設值空格填充
print(format(s,'+^30')) # 居中對齊,用“+”填充不足部分
print(format(s,'*<8')) # 右對齊,不足指定寬度部分用“*”填充
print(format(s,'08')) # 右對齊,指定0標誌位填充

式化浮點數

對於浮點數型別,可以提供的引數有e、E、f、F、g、G、n、%、None 等。
用 f 表示浮點型別,可以在其前邊加上精度控制,用於控制輸出寬度。如果輸出位數大於寬度,就按實際位數輸出。還可以為浮點數指定符號,+表示在正數前顯示正號+。- 表示在負數前顯示負號 - (- 與什麼都不加({:f})時一致)。空格表示在正數前加空格,在負數前加 -,.3f 表示浮點數的精度為 3(小數位保留3位)。

print(format(628,'.1f')) # 格式化為保留1位小數的浮點數,輸出:628.0
print(format(628,'.2f')) # 格式化為保留2位小數的浮點數,輸出:628.00
print(format(3.14159,'.1f')) # 格式化為保留1位小數的浮點數,輸出:3.1
print(format(3.14159,'.2f')) # 格式化為保留2位小數的浮點數,輸出:3.14
print(format(3.14159,'.5f')) # 格式化為保留5位小數的浮點數,輸出:3.14159
print(format(-3.14159,'.3f')) # 格式化為保留3位小數的浮點數,輸出:-3.142
print(format(3.1415926535898,'f')) # 預設精度保留6位小數,輸出:3.141593
# 預設精度保留6位小數,不足部分用空格填充,輸出:3.141590
print(format(3.14159,'f'))

print(format(3.14159,'+.3f')) # 格式化為保留3位小數帶符號的浮點數
print(format(3.14159,'>8.2f')) # 右對齊,保留2位小數
print(format(3.14159,'<10.2f')) # 左對齊,寬度為10,保留2位小數,不足部分用空格填充
print(format(3.14159,'<.3f')) # 左對齊,保留3位小數
print(format(3.14159,'@>10.3f')) # 右對齊,用“@”填充不足位置
print(format(-3.14159,'=10.2f')) # 格式化為保留2位小數的10位數,預設用空格填充
print(format(-3.14159,'0=10.2f')) # 格式化為保留2位小數的10位數,空格用0填充
print(format(3.14159,'0^10.2f')) # 保留2位小數的10位數,居中顯示,空格用0填充

運用五:格式化百分數

在格式化解釋中單獨或者在精度之後新增 % 號,可以實現用百分數顯示浮點數,如:

print(format(0.161896,'%')) # 將小數格式化成百分數,輸出:16.189600%
print(format(0.161896,'.2%')) # 格式化為保留2位小數的百分數,輸出:16.19%
print(format(0.0238912,'.6%')) # 格式化為保留6位小數的百分數,輸出:2.389120%
print(format(2 / 16,'.2%')) # 格式化為保留2位小數的百分數,輸出:12.50%
print(format(3.1415926,'.1%')) # 格式化為保留1位小數的百分數,輸出:314.2%
print(format(0.161896,'.0%')) # 格式化為保留整數的百分數,輸出:16%
print(format(0.0238912,'8.6%')) # 格式化為保留6位小數的八位百分數,輸出:2.389120%
print(format(0.0238912,'>8.3%')) # 格式化為保留3位小數的八位百分數,輸出:2.389%

運用六:格式化科學記數法

如果要將浮點數採用科學記數法表示,可以在格式化模板中使用 e 和 E 或者 g 和 G。e 為通用的冪符號,用科學記數法列印數字,用 e 表示冪。使用 g 時,將數值以 fixed-point 格式輸出。當數值特別大的時候,用冪形式輸出。

#####e和E
print(format(3141592653589,'e')) # 科學記數法,預設保留6位小數,輸出:3.141593e+12
print(format(3.14,'e')) # 科學記數法,預設保留6位小數,輸出:3.140000e+00
print(format(3.14,'0.4e')) # 科學記數法,預設保留4位小數,輸出:3.1400e+00
print(format(3141592653589,'0.2e')) # 科學記數法,保留2位小數,輸出:3.14e+12
print(format(3141592653589,'0.2E')) # 科學記數法,保留2位小數,採用大寫E表示,輸出:3.14E+12
#####g和G
print(format(3.14e+1000000,'F')) # 無窮大轉換成大寫字母,輸出:INF
print(format(3141592653589,'g')) # 科學記數法,保留2位小數,輸出:3.14159e+12
print(format(314,'g')) # 科學記數法,保留2位小數,輸出:314
print(format(3141592653589,'0.2g')) # 科學記數法,保留2位有效數字,採用小寫e表示,輸出:3.1e+12
print(format(3141592653589,'G')) # 科學記數法,保留5位小數,採用大寫E表示,輸出:3.14159E+12
print(format(3.14e+1000000,'g')) # 小數點計數法,無窮大轉換成小寫字母,輸出:inf

運用七:格式化金額

format() 函式還能用來作金額的千位分隔符。如果要實現金額前面帶上相關貨幣的符號形式的功能,需要在該函式前面手動加上相應貨幣符號。如:

print('$' + format(1201398.2315,'.2f')) # 新增美元符號,小數保留2位
print(chr(36) + format(1201398.2315,'.2f')) # ASCII碼新增美元符號,小數保留2位
print('¥' + format(78088888,',')) # 新增人民幣符號,用千位分隔符區分金額
print('£' + format(7908.2315,'.2f')) # 新增英鎊符號,用千位分隔符進行區分
print('?' + format(7908.2315,.2f')) # 新增歐元符號,保留兩位小數,千位分隔
print(chr(0x20ac) + format(1201398.2315,f')) # 使用十六進位制編碼新增歐元符號

程式執行結果如下:

在這裡插入圖片描述

運用八:格式化字元

格式化字元主要包括擷取字串,字串對齊方式顯示,填充字串等,程式碼如下:

print(format('PYTHON','M^20.3')) # 擷取3個字元,寬度為20居中,不足用M填充
print(format("PYTHON",'10')) # 預設居左顯示,不足部分用空格填充
print(format('blog.csdn.net','.3')) # 擷取3個字元,預設居左顯示
print(format("PYTHON",'>10')) # 居右顯示,不足部分用空格填充
s = 'blog.csdn.net'
print(format(s,'0>20')) # 右對齊,不足指定寬度部分用0填充
print(format(s,'>4')) # 右對齊,因字元實際寬度大於指定寬度4,不用填充
print(format(s,'*>20')) # 右對齊,不足指定寬度部分用*填充
print(format(s,'>020')) # 右對齊,指定0標誌位填充
print(format(s,'>20')) # 右對齊,沒指定填充值,用預設值空格填充
print(format(s,'+^30')) # 居中對齊,用+填充不足部分

程式執行結果如下:

在這裡插入圖片描述

運用九:進位制轉換

進位制轉換主要是進行十進位制、十六進位制、八進位制、二進位制的轉換,如果是十六進位制、八進位制、二進位制數,轉換前最好保留進位制字首,如 Ox/0o/0b,這樣可以保證轉換的準確性。主要進位制轉換符號說明如下:

b:二進位制。將數字以 2 為基數進行輸出。d:十進位制整數。將數字以 10 為基數進行輸出。o:八進位制。將數字以 8 為基數進行輸出。x:十六進位制。將數字 以16 為基數進行輸出,9 以上的數字用小寫字母。

十進位制、十六進位制、八進位制、二進位制的轉換程式碼如下:

print(format(77)) # 格式引數為空,預設為十進位制
print(format(77,'d')) # 原來是十進位制數,轉換後為原值
print(format(-77,'d')) # 原來是十進位制數,轉換後為原值
print(format(77,'8d')) # 轉換為8位十進位制數,空餘部分用空格填充
print(format(-77,'8d')) # 轉換為8位十進位制數,負數在負號前填充空餘部分空格
print(format(77,'+8d')) # 轉換為8位帶符號十進位制數,在符號前填充空餘部分空格
print(format(-77,'08d')) # 轉換為8位十進位制數,負數在負號前填充空餘部分空格
print(format(77,'+08d')) # 轉換為8位帶符號十進位制數,在符號前填充空餘部分空格
print(format(-77,'#8d')) # 轉換為8位十進位制數,加進位制標誌
print(format(-77,'=8d')) # 轉換為8位十進位制數,空餘部分填充空格
print(format(+77,'*=8d')) # 轉換為8位十進位制數,空餘部分填充*
print(format(+77,'*=+8d')) # 轉換為8位帶符號十進位制數,符號與資料之間填充*
print(format(-77,'#=8d')) # 轉換為8位十進位制數,在符號與空餘部分填充#
print(format(+77,'*<8d')) # 轉換為8位十進位制數,左對齊,空餘部分填充*
print(format(-77,'#>8d')) # 轉換為8位十進位制數,右對齊,空餘部分填充#
print(format(0X5A,'d')) # 十六進位制數5A轉換成十進位制數,0X代表十六進位制數
print(format(0B011101,'+8d')) # 二進位制數011101轉換成十進位制數,0B代表二進位制數
print(format(0O34,'d')) # 八進位制數34轉換成十進位制數,0O代表八進位制數
print(format(0O123456,'08d')) # 十六制數123456轉換成十進位制數,不足用0填充
print(format(+0X1234,'*>8d')) # 十六進位制數1234轉換成十進位制數,右對齊,不足用*

對於帶有進位制字首的數,如 0x、0o、0b,可以直接在後面加上 x、o、b 進行刪除。

print(format(0X5A,'x')) # 去除十六進位制數的字首,輸出:5a
print(format(0B011101,'b')) # 去除二進位制數的字首,輸出:11101
print(format(0O34,'o')) # 去除八進位制數的字首,輸出:34

運用十:格式化日期和時間

format() 函式也可以對日期和時間進行格式化,格式化時可以通過日期和時間格式符號進行設定,Python 中常用的時間日期格式化符號如表 1.1 所示。

在這裡插入圖片描述

常用操作程式碼如下:

import datetime

now = datetime.datetime.now()
print(format(now,'%Y-%m-%d %H:%M:%S %A')) # 當前時間格式化為年-月-日+完整英文星期
print(format(now,'%Y-%m-%d %H:%M:%S %a')) # 當前時間格式化為年-月-日+簡寫英文星期
# 中文年-月-日顯示
print(format(now,'%Y'),'年',format(now,'%m'),'月','日')
# 中文時間顯示
print(format(now,'%H'),'%M'),'分','%S'),'秒')
print(format(now,'%Y-%m-%d %H:%M:%S %a')) # 當前時間格式化為年-月-日+簡寫英文星期
print(format(now,'%Y-%m-%d')) # 當前時間格式化為標準年-月-日
print(format(now,'%y-%m-%d')) # 當前時間格式化為短日期年-月-日
print(format(now,'%Y<%m>%d')) # 當前時間格式化為長日期年-月-日,間隔符為“<”和“>”
print(format(now,'%c')) # 本地對應的年-月-日星期表示

print(format(now,'%B')) # 本地完整的月份表示,輸出:May
print('現在是今年第','%j'),'天') # 今天是一年中第幾天,輸出:現在是今年第 017 天
print('本週是今年第','%U'),'周') # 本週是一年中第幾周,輸出:本週是今年第 02 周
print(format(now,'%y%m%d')) # 無間隔符短日期格式年月日,輸出:210117
print(format(now,'%Y-%m')) # 長日期格式年-月,輸出:2021-01
print(format(now,'%m-%d')) # 月-日顯示,輸出:01-17
print(format(now,'%m')) # 月份單獨顯示,輸出:01
print(format(now,'%d')) # 日期單獨顯示,輸出:17

print(format(now,'%H%M%S')) # 無間隔符,輸出:133536
print(format(now,'%H:%M:%S')) # 標準時-分-秒,輸出:13:35:36
print(format(now,'%I:%M:%S %I')) # 12小時制時-分-秒,輸出:01:35:36 01
print(format(now,'%H:%M')) # 時+分,輸出:13:35
print(format(now,'%M%S')) # 分+秒,輸出:3536
print(format(now,'%H')) # 只顯示小時,輸出:13
print(format(now,'%H:%M:%S %p')) # 日期顯示按AM,PM顯示,輸出:13:35:36 PM
print(format(now,'%a')) # 英文星期簡寫,輸出:Sun
print(format(now,'%A')) # 英文星期完整顯示,輸出:Sunday
week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
print(week[int(format(now,'%w'))]) # 中文星期,輸出:星期日

dt = datetime.datetime(2020,5,9)
dm = datetime.datetime(2020,9,12,50,20)
# 將輸入的日期按年-月-日和時間格式化,因時間沒有輸入,按0時處理
print(format(dt,'%Y-%m-%d %H:%M:%S'))
print(format(dt,'%Y-%m-%d')) # 將輸入的日期按年-月-日格式化
print(format(dm,'%Y-%m-%d %H:%M:%S')) # 將輸入的日期按年-月-日和時間格式化
print(format(dm,'%Y-%m-%d')) # 將輸入的日期按年-月-日格式化

wx = datetime.datetime.now()
print(str(wx),'0>3')) # 年-月-日 +3位編號
print(format(now,'0>3')) # 年-月-日 +NO+3位編號
print(format(now,'0>3')) # 日期 +NO+3位編號
print(format(now,'0>3')) # 時鐘+分 +NO+3位編號

四、使用 f-string 方法

f-string 是 Python3.6 新增的一種字串格式方法,由於前面已經介紹了多種格式化方式,大同小異,此處用簡單的案例對其用法進行演示。

【示例1】使用 f-string 方法在字串中嵌入變數和表示式

name = "Python" # 字串
ver = 3.6 # 浮點數
# 輸出:Python-3.6、Python-3.7、Python-3.8000000000000003
print(f"{name}-{ver}、{name}-{ver + 0.1}、{name}-{ver + 0.2}")

【示例2】在示例 1 中,表示式計算浮點數時發生溢位,可以使用特殊格式化修飾符限定只顯示 1 位小數。

name = "Python" # 字串
ver = 3.6 # 浮點數
# 輸出:Python-3.6、Python-3.7、Python-3.8
print(f"{name}-{ver}、{name}-{ver + 0.1}、{name}-{ver + 0.2:.1f}")

【示例3】把十六進位制數字 10 分別轉換為用十進位制、十六進位制、八進位制和二進位制表示。

n = 0x10 # 十六進位制數字10
# 輸出:dec:16,hex:10,oct:16,bin:10000
print(f"dec:{n:d},hex:{n:x},oct:{n:0},bin:{n:b}")

【示例4】如果要在多行中表示字串,可以使用下面示例方式,在每一行子串前面都加上 f 修飾符。

name = "Python" # 字串
ver = 3.6 # 浮點數
s = f"{name}-" \
 f"{ver}"
print(s) # 輸出:Python-3.6

到此這篇關於全網最細 Python 格式化輸出用法講解的文章就介紹到這了,更多相關 Python 格式化輸出用法內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!