Python 字串格式化
F-String 在 Python 3.6 中引入,現在是格式化字串的首選方式。
在 Python 3.6 之前,我們必須使用 format()
方法。
F-Strings
F-string 允許您格式化字串的選定部分。
要將字串指定為 f-string,只需在該字串文字前加上一個 f
,如下所示:
佔位符和修飾符
要在 f-string 中格式化值,請新增佔位符 {}
,佔位符可以包含變數、操作、函式和用於格式化值的修飾符。
佔位符也可以包含一個修飾符來格式化值。
透過新增冒號 :
後跟一個合法的格式化型別來包含修飾符,例如 .2f
,它表示小數點後保留 2 位的定點數。
您也可以直接格式化值,而不將其保留在變數中。
在 F-Strings 中執行操作
您可以在佔位符內執行 Python 操作。
您可以進行數學運算
您可以對變數執行數學運算
示例
在顯示價格之前加上稅費
price = 59
tax = 0.25
txt = f"The price is {price + (price * tax)} dollars"
print(txt)
自己動手試一試 »
您可以在佔位符內執行 if...else
語句。
示例
如果價格超過 50,則返回“昂貴”,否則返回“便宜”
price = 49
txt = f"It is very {'Expensive' if price>50 else 'Cheap'}"
print(txt)
自己動手試一試 »
在 F-Strings 中執行函式
您可以在佔位符內執行函式。
函式不必是內建的 Python 方法,您可以建立自己的函式並使用它們。
示例
建立一個將英尺轉換為米的函式
def myconverter(x)
return x * 0.3048
txt = f"The plane is flying at a {myconverter(30000)} meter altitude"
print(txt)
自己動手試一試 »
更多修飾符
在本章開頭,我們解釋瞭如何使用 .2f
修飾符將數字格式化為小數點後保留 2 位的定點數。
還有其他幾個修飾符可用於格式化值。
以下是所有格式化型別列表。
格式化型別 | ||
---|---|---|
:< |
試一試 | 左對齊結果(在可用空間內) |
:> |
試一試 | 右對齊結果(在可用空間內) |
:^ |
試一試 | 居中對齊結果(在可用空間內) |
:= |
試一試 | 將符號放在最左側位置 |
:+ |
試一試 | 使用加號指示結果是正數還是負數 |
:- |
試一試 | 僅對負值使用減號 |
: |
試一試 | 在正數前插入額外的空格(負數前使用負號) |
:, |
試一試 | 使用逗號作為千位分隔符 |
:_ |
試一試 | 使用下劃線作為千位分隔符 |
:b |
試一試 | 二進位制格式 |
:c |
將值轉換為相應的 Unicode 字元 | |
:d |
試一試 | 十進位制格式 |
:e |
試一試 | 科學記數法,使用小寫 e |
:E |
試一試 | 科學記數法,使用大寫 E |
:f |
試一試 | 定點數格式 |
:F |
試一試 | 定點數格式,大寫格式(顯示 inf 和 nan 為 INF 和 NAN ) |
:g |
通用格式 | |
:G |
通用格式(使用大寫 E 表示科學記數法) | |
:o |
試一試 | 八進位制格式 |
:x |
試一試 | 十六進位制格式,小寫 |
:X |
試一試 | 十六進位制格式,大寫 |
:n |
數字格式 | |
:% |
試一試 | 百分比格式 |
String format()
在 Python 3.6 之前,我們使用 format()
方法來格式化字串。
format()
方法仍然可以使用,但 f-strings 更快,並且是格式化字串的首選方式。
本頁的下一個示例將演示如何使用 format()
方法格式化字串。
format()
方法也使用花括號作為佔位符 {}
,但語法略有不同。
你可以在花括號內新增引數來指定如何轉換值。
檢視我們 String format() 參考 中的所有格式化型別。
多個值
如果你想使用更多值,只需向 format() 方法新增更多值即可。
print(txt.format(price, itemno, count))
並新增更多佔位符。
示例
quantity = 3
itemno = 567
price = 49
myorder = "I want {} pieces of item number {} for {:.2f} dollars."
print(myorder.format(quantity, itemno, price))
自己動手試一試 »
索引號
您可以使用索引號(花括號內的數字 {0}
)來確保值放置在正確的佔位符中。
示例
quantity = 3
itemno = 567
price = 49
myorder = "I want {0} pieces of item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))
自己動手試一試 »
同樣,如果你想多次引用同一個值,請使用索引號。
示例
age = 36
name = "John"
txt = "His name is {1}. {1} is {0} years old."
print(txt.format(age, name))
自己動手試一試 »
命名索引
您還可以使用命名索引,方法是在花括號內輸入一個名稱 {carname}
,然後您必須在使用引數值時使用名稱 txt.format(carname = "Ford")
。
示例
myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname = "Ford", model = "Mustang"))
自己動手試一試 »