2024-03-12|閱讀時間 ‧ 約 25 分鐘

[Python][微進階]格式化字串f-string

在Python中使用f-string(f字串)時,你可以更方便地格式化字串,這是從Python 3.6版本開始引入的新特性。

至從有f-string後,基本上我個人就沒在用.format了。

以下是f-string的基本用法:

它使用在字串前加上 'f' 或 'F' 的前綴,並且在字串中使用大括號 {} 包含變數表達式


基本用法:

在這個例子中,{name}{age}是表達式,它們會被替換為相應變數的值。

name = "Alice"
age = 30
print(f"我的名字是{name},我今年{age}歲。")

輸出:我的名字是Alice,我今年30歲

表達式和運算符:

可以在表達式中執行運算。

x = 5
y = 10
print(f"{x}{y}的和是{x + y}。")

輸出:5和10的和是15

格式化控制:

在這裡,:.2f表示浮點數要顯示兩位小數。

pi = 3.14159
print(f"圓周率的值為:{pi:.2f}")

輸出:圓周率的值為:3.14

使用字典和列表:

person = {"name": "Crab", "age": 18}
print(f"我的名字是{person['name']},我今年{person['age']}歲。")

輸出:我的名字是Crab,我今年18歲。

調用方法和函數:

使用 f-string 中的 {greeting.capitalize()} 時,實際上是在呼叫字符串(string)對象的 capitalize() 方法。

這裡的 greeting 是一個字符串變數,而 .capitalize() 是一個字符串對象方法

這個方法的作用是將字符串的第一個字符轉換為大寫,並保持其餘字符為小寫。

  1. greeting 變數包含字符串 "crab"。
  2. greeting.capitalize() 將 "crab" 中的 "c" 轉換為大寫,而 "rab" 保持小寫,因此結果是 "crab" 變為 "Crab"。
greeting = "crab"
print(f"{greeting.capitalize()} 好帥!")

輸出:Crab好帥!


在 f-string 中,你不使用 % 符號,而是使用 : 符號進行格式化。

以下是一些常見的 % 符號在 f-string 中對應的 : 符號的應用:

浮點數格式化:

控制浮點數的顯示方式,包括小數點位數,.2f代表小數點後兩位

pi = 3.1415926535
print(f"{pi:.2f}")

輸出:3.14

整數格式化:

控制整數的顯示方式。變數age後面加:d

但感覺沒什麼機會用到

age = 25
print(f"Age: {age:d}")

輸出:Age:25

對齊數字:

使用 :<, :>:^ 控制數字的對齊方式,使輸出更易讀。

number = 42
print(f"Number: {number:<5}") # 左對齊
print(f"Number: {number:>5}") # 右對齊
print(f"Number: {number:^5}") # 居中對齊

輸出:

Number: 42

Number: 42

Number: 42

填充數字:

使用填充字符,例如 0,來填充數字。

number = 7
print(f"Number: {number:03}") # 填充為三位數,不足補零

輸出: Number: 007

千位分隔符號:

使大數字更易讀,通常使用逗號 , 來區分千位。

large_number = 1234567890
print(f"千份位符號表示{large_number:,}")

輸出: 千份位符號表示1,234,567,890

其他進制表示:

使用 :x 顯示十六進位、:o 顯示八進位等。

number = 255
print(f"顯示十六進位 : {number:x}")
print(f"顯示八進位 : {number:o}")

輸出:

顯示十六進位 : ff

顯示八進位 : 377

條件顯示:

根據條件顯示不同格式的整數。

:+:- 是用來顯示正負號的格式選項。

:+ 表示顯示正數時帶有正號,負數帶有負號:

number = 42
print(f"正數: {number:+}") # 正數帶有正號

輸出:正數: +42

:- 表示顯示正數時不帶正號,負數仍帶有負號:

number = -42
print(f"負數: {number:-}") # 正數不帶正號

輸出:負數: -42

整數格式化提供了一種更靈活的方式,使你能夠控制整數在輸出時的外觀,以滿足不同情境的需求。


是不是相比.format()或者跟以前%格式化的用法,f-srting好用多了呢




分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.