Python 好用的 F 字串!
Python 裡的 F 字串(F-String)不只是可以直接把變數塞到字串裡、看起來更好看、更好寫而已,它還有一些有趣的用法,像是我們常會遇到需要幫錢錢加上千位數字的逗點,在其它程式語言可能需要透過其它函數或是另外自己寫函數來處理,用 F 字串可以輕鬆做到這件事,例如:
my_money = 1000000
print(f"{my_money:,}") # 印出 1,000,000
print(f"{my_money:.2f}") # 印出 1000000.00
print(f"{my_money:,.2f}") # 印出 1,000,000.00
在 F 字串裡的變數後面加上 :
可以幫我們做格式化,這裡的 ,
就是在千位數字的地方加上逗點,.2f
是指可以讓原本的整數以小數點以下 2 位數的方式呈現,如果組合在一起 ,.2f
就會變成整數部份加上千位數逗號,小數部份則呈現到小數點以下 2 位數。
有時候我們在做一些數學計算之後得到的結果想要用百分比的形式,你可能得先把它乘以 100 再後面加個 %
符號,像這樣:
ratio = 0.315
print(f"{ratio * 100}%") # 印出 31.5%
這沒什麼問題,在別的程式語言也差不多是這麼做,但 Python 的 F 字串可以更簡單幫我們做到這件事:
ratio = 0.315
print(f"{ratio:.1%}") # 印出 31.5%
.1
表示顯示到小數點以下第 1 位,後面的 %
就是直接幫我們換成百分比的形式,至於這樣寫有沒有比較簡單或直觀可能因人而異了,因為有些人少了乘以 100 可能會覺得哪裡怪怪的。
如果有需要的話,我們同樣也可以透過 :
來設定字串的「寬度」,例如:
pi = 3.1415926
print(f"|{pi:5}|") # 印出 |3.1415926|
print(f"|{pi:20}|") # 印出 | 3.1415926|
我刻意在字串的兩邊加上 |
是為了讓大家看得更清楚一點,:
後面接的數字就是這個 {}
字串的寬度,如果字串本身的字數超過寬度(例如 5
),字串還是會把設定的寬度給撐開,如果我設定寬度大一點,例如設定成 20
,這樣會在字串的左邊補上空白,呈現出來的效果就會變成靠右對齊。
有靠右對齊,自然也有靠左對齊跟置中對齊,這時候可以在寬度的數字前面加上一個 -
符號,例如:
pi = 3.1415926
print(f"|{pi:<20}|") # 靠左對齊
print(f"|{pi:>20}|") # 靠右對齊
print(f"|{pi:^20}|") # 置中對齊
印出來的結果會是:
|3.1415926 |
| 3.1415926|
| 3.1415926 |
以做網站來說,因為瀏覽器不太會理會 HTML 裡多餘的空白字元,所以這種格式化對齊大概沒什麼機會派上用場,但如果是用在做一些資料統計或分析的小程式,並打算在終端機畫面呈現或是列印報表的時候,這種對齊就挺方便的了,例如:
print(f"1. {'為你自己學 Python':<20} {'NTD 120'}")
print(f"2. {'為你自己學 Git':<20} {'NTD 200'}")
print(f"3. {'為你自己學 Ruby':<20} {'NTD 180'}")
print(f"4. {'為你自己學 Rust':<20} {'NTD 250'}")
印出來的結果會變這樣:
1. 為你自己學 Python NTD 120
2. 為你自己學 Git NTD 200
3. 為你自己學 Ruby NTD 180
4. 為你自己學 Rust NTD 250
填補的字串預設是使用空白字元,但如果你喜歡也可以換成別的字,例如:
pi = 3.1415926
print(f"|{pi:x<20}|") # 靠左對齊
print(f"|{pi:x>20}|") # 靠右對齊
print(f"|{pi:x^20}|") # 置中對
我用了 x
字元來填補空白,印出來的結果會變成:
|3.1415926xxxxxxxxxxx|
|xxxxxxxxxxx3.1415926|
|xxxxx3.1415926xxxxxx|
F 字串也能幫我們把整數轉換成二進位、八進位或十六進位,例如:
# 格式化成二進位
print(f"{10:b}") # 印出 1010
# 格式化成八進位
print(f"{10:o}") # 印出 12
# 格式化成十六進位
print(f"{255:x}") # 印出 ff
還記得以前學過的「科學記號表示」嗎?F 字串也能幫我們搞定,例如:
speed_of_light = 299792458 # 光速
print(f"{speed_of_light:.3e}") # 印出 2.998e+08
.3
代表小數點後面要顯示幾位數,e
代表科學記號,這樣就能把數字格式化成科學記號表示法。最後,F 字串還能順便幫我們搞定日期格式:
from datetime import date
the_day = date(1947, 2, 28) # 228
print(f"{the_day:%Y/%m/%d}") # 印出 1947/02/28
其中 %Y
跟 %m
跟 %d
是分別代表代表年份、代表月份以及日期,這些格式化參數的用法跟其它程式語言的格式化差不多,應該不難查到分別代表哪些意思。雖然在其它程式語言也有類似這種把變數塞進字串裡的「字串安插(String Interpolation)」功能,但 Python 的 F 字串還能加上格式化工具,能玩的把戲就更多了
工商:想學 Python 嗎?我教你啊!
想要成為軟體工程師嗎?這不是條輕鬆的路,需要有足夠的決心、設定目標並持續學習,我們的 ASTROCamp 軟體工程師培訓營提供專業的前後端課程培訓,幫助你在最短時間內建立正確且扎實的軟體開發技能,有興趣而且不怕吃苦的話不妨來試試看吧 :)