Python 簡易手冊

單元 35 - 格式化字串

格式化字串 (formatted string) 就是讓字串 (string) 依格式可以由變數 (variable) 代入值,現在 Python 的格式化字串分成舊式跟新式兩種,舊式格式化字串是類似 C 語言 printf() 函數 (function) 用的方式,例如

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 舊式格式化字串
s = "%(word)s is %(number)d."

# 設定要代入的數值
data = {"word": "Three", "number": 3}

# 印出舊式格式化字串
print(s % data)

# 檔名: string_demo8.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

單元 33 - 字串介紹如何定義字串。

第 2 行,舊式格式化字串是在字串中加上百分比符號,後面用小括弧圍住變數,最後來要加上該變數指定型態的字元,例如 s 是字串, d 則是整數

 1
 2
# 舊式格式化字串
s = "%(word)s is %(number)d."

然後在第 5 行設定 key 為變數字串, value 為代入資料的字典 (dictionary)

 4
 5
# 設定要代入的數值
data = {"word": "Three", "number": 3}

第 8 行印出格式化字串,注意 print() 函數的引數 (argument) 為 s 後面緊接百分比符號,後面再接字典變數

 7
 8
# 印出舊式格式化字串
print(s % data)

s%data 中間有沒有空格都是合法的,此例執行結果如下

> python string_demo8.py
Three is 3.
>

以上可以看到舊式格式化字串還需要指定型態,使用上並沒有很直覺,因此就被新式格式化字串取代,新式格式化字串有兩種,第一種是 f 字串,舉例如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 設定變數
word = "Three"
number = 3

# 設定 f 字串
s = f"{word} is {number}."

# 印出 f 字串
print(s)

# 檔名: string_demo9.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

第 6 行是 f 字串

 5
 6
# 設定 f 字串
s = f"{word} is {number}."

f 字串中以大括弧圍住變數名稱,變數必須是使用 f 變數前就建立,此例建立在第 2 行及第 3 行

 1
 2
 3
 4
# 設定變數
word = "Three"
number = 3

如果沒有在使用 f 字串前建立好變數,執行的時候就會報錯,此例執行結果如下

> python string_demo9.py
Three is 3.
>

f 字串中加上格式化的方式是要在變數後加上冒號,然後數字表示該變數總共顯示的位數,字串預設在後面補空格,浮點數變數加上小數點,小數點之前是整數位數,小數點之後是 0 以下的位數,同樣整數前補空格, 0 之後則是補 0 ,浮點數變數的格式化最後要加上 f ,舉例如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 設定資料字典
menu = {"Burger": 10.0,
        "Apple": 12.5,
        "Milk": 8.5,
        "Sandwich": 14.25}

# 用迴圈印出資料字典的內容
for name, price in menu.items():
    print(f'{name:10} ==> {price:10.3f}')

# 檔名: string_demo10.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

這裡是用字典儲存資料

 1
 2
 3
 4
 5
# 設定資料字典
menu = {"Burger": 10.0,
        "Apple": 12.5,
        "Milk": 8.5,
        "Sandwich": 14.25}

單元 41 - 字典會詳細介紹字典的用法。

底下 for 迴圈 (loop) 是利用字典的 items() 方法 (method) 分別取得字典的 keyvalue

 7
 8
 9
# 用迴圈印出資料字典的內容
for name, price in menu.items():
    print(f'{name:10} ==> {price:10.3f}')

單元 23 - for 陳述詳細介紹 for 的使用方式。

此例執行結果如下

> python string_demo10.py
Burger     ==>     10.000
Apple      ==>     12.500
Milk       ==>      8.500
Sandwich   ==>     14.250
>

新式格式字串的第二種則是利用字串的 format() 方法,不過只需要使用一般的字串,字串中加入大括弧及索引數,舉例如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 設定格式化字串
s = "{0} is no {1}."

# 印出格式化字串
print(s.format("There", "spoon"))
print(s.format("Here", "sign"))
print(s.format("He", "good"))

# 檔名: string_demo11.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

格式化字串變數 s 是在第 2 行定義

 1
 2
# 設定格式化字串
s = "{0} is no {1}."

下面 print() 函數是以 s 呼叫 format() 方法,並且提供不同的引數,執行結果如下

> python string_demo11.py
There is no spoon.
Here is no sign.
He is no good.
>

參考資料

上一頁 單元 34 - 字串方法
回 Python 簡易手冊 首頁
下一頁 單元 36 - Unicode
回 Python 教材首頁
回程式語言教材首頁