格式化字符串(string formatting)是以指定輸出參數格式和相對位置來“美化”字符串。輸出參數格式包括數字的小數點位數、字符串大小寫等,相對位置標註出被格式化的詞是在句中的位置。比如:
print('It costs %.2f.' %(123.456))
It costs 123.46.
其中 %.2f 是 123.456 的輸出參數格式,.2f 代表保留小數點兩位,而 %.2f 所在的位置在 costs 後面,意思說將 123.456 變成 123.46 後插在 costs 後面。
格式化字符串有四種方法:
- 用 % 字符 (上面用的)
- 用 $ 字符
- 用 format() 函數
- 用 f-string
本文中主要以下面這句話舉例子,即“在 2020 年 3 月 4 日,阿里巴巴的市值爲 553789 百萬美元”。
s = 'On 04 Mar 2020, the market cap of Alibaba is 553789 mio USD.'
首先定義市值(Mcap)和貨幣單位(curr)兩個變量。
Mcap = 553789
curr = 'USD'
下面開始展示四種格式化的方法。
1. 用 % 字符格式化
print('The market cap of Alibaba is %d mio %s.' %(Mcap, curr))
The market cap of Alibaba is 553789 mio USD.
該方法的核心範式是:
步驟:
- 首先寫句子;
- 再用 % 加小括號,裏面列出要被格式化的變量名;
- 最後在句子一一對應變量名的地方寫出 %x(d 代表數字,s 代表字符串,等等)。
2. 用 $ 字符格式化
from string import Template
info = dict(Mcap=Mcap, curr=curr)
print(Template('The market cap of Alibaba is $Mcap mio $curr.').substitute(info))
The market cap of Alibaba is 553789 mio USD.
該方法的核心範式是:
在此方法下,我們需要將變量名和變量值作爲鍵和值,創建一個字典。
步驟:
- 首先要調用 Template 庫函數並將句子傳給它;
- 再把字典傳入 substitute() 函數;
- 最後在句子一一對應變量名的地方寫出 $k(k 代表字典中的鍵)。
3. 用 format 函數格式化
print('The market cap of Alibaba is {} mio {}.'.format(Mcap, curr))
The market cap of Alibaba is 553789 mio USD.
該方法的核心範式是:
步驟:
- 首先寫句子;
- 再用 format() 函數,裏面列出要被格式化的變量名;
- 最後在句子一一對應變量名的地方只用寫出 {}。
4. 用 f-string 方法格式化
print(f'The market cap of Alibaba is {Mcap} mio {curr}.')
The market cap of Alibaba is 553789 mio USD.
該方法的核心範式是:
步驟:
- 首先寫出句子,以 f' ' 或 F' ' 的形式;
- 然後在句子只用寫出 {v},其中 v 是要被格式的變量。
當決定用哪種格式化時,通常我們評估它是否簡單直觀而且符合自己的習慣,比如
- 那些有 C 語言背景的使用者就偏向用 “%” 字符
- 那些偏好標準化的使用者就偏向用 "$" 字符
- 那些偏好個性化的使用者就偏向用 format 函數