《Python3萌新入門筆記》中,我們看到了使用“%”和“format()”進行字元串格式化的操作。
在Python3.6中,又出現的一種新的格式化字元串的方法:f-string。
f-string是指以“F”或“f”為字首的字元串。
使用方法很簡單,我們來看示例:
width = 20
height = 10
print(f'矩形的寬為{width}厘米,高為{height}厘米,面積為{width*height}平方厘米。')
# 顯示輸出結果為:矩形的寬為20厘米,高為10厘米,面積為200平方厘米。
相信大家已經看懂了。
在f-string中,包含可以替換的字段,也就是通過“{}”嵌入的表達式,并且在運作時計算表達式的值。
除了上面的這個用法,我們再看一些示例:
name = '小樓'
print(f'{name!r}是一個美男子!')
# 顯示輸出結果為:'小樓'是一個美男子!
上面的示例代碼運作後,顯示的結果中,名字兩側帶有單引号。
很明顯是f-sting中的“!r”在起作用。
“!r”表示對前面的“name”調用“repr()”方法。
上面的代碼等價于下方代碼:
name = '小樓'
print(f'{repr(name)}是一個美男子!')
與此相關的還有“!s”和“!a”分别調用“str()”方法和“ascii()”方法。
另外,在f-string中還可以通過“:”引用說明符。
示例代碼:
w = '10' # 寬度
p = 5 # 精度
value = 12.34567
print(f'result: {value:{w}.{p}}')
# 顯示輸出結果為:result: 12.346
從上方代碼中,大家能夠看出,說明符既可以是數字,也可以是數字的字元串。
提示:寬度為10是指最終結果中“value”的字元總數量(注意前面包含了5個空格),精度為5是指最終結果中“value”所包含的數值字元總數量(不含小數點)。
除了對數值的轉換說明符操作,還可以對日期進行轉換操作。
示例代碼:
from datetime import datetime
import locale
today = datetime.now()
locale.setlocale(locale.LC_CTYPE, 'chinese') # 解決中文異常
print(f'今天是{today:%Y年%m月%d日}。')
# 顯示輸出結果類似:今天是2018年07月11日。
還有,可以進行數字進制的轉換。
示例代碼:
number = 1024
print(f'數字[{number}]的十六進制是[{number:#0x}]。')
# 顯示輸出結果為:數字[1024]的十六進制是[0x400]。
以上是關于字元串格式化的各類操作介紹。
最後,大家要注意以下幾點。
1、表達式中不能使用反斜杠“\”,如果需要使用的話,通過建立臨時變量解決。
示例代碼:(錯誤)
print(f'Unicode: {ord("\n")}')
示例代碼:(正确)
newline = ord('\n')
print(f'Unicode: {newline}')
# 顯示輸出結果為:Unicode: 10
2、注意單引号和雙引号的混用規則。
示例代碼:
d = {'name': '小樓'}
print(f'{d['name']}是一個大帥哥!') # 錯誤
print(f'{d["name"]}是一個大帥哥!') # 正确
3、要注意格式化字元串文字不能用作文檔字元串,即使它們不包含表達式。