Python格式化字符串的四種方法
1.使用 %
運算符
-
%s
是一個字符串的占位符,而 “World” 是替換它的值print("Hello, %s!" % "World") # 輸出:Hello, World!
-
你可以使用多個占位符
注意:多個變量占位,變量要用括號括起來,并按照占位的順序填入
name = "小孤獨" age = 16 print("My name is %s and I am %s years old." % (name, age)) # 輸出:My name is 小孤獨 and I am 16 years old.
-
Python中支持非常多的數據類型占位,最常用的如下:
格式符號 轉化 %s 將內容轉換成字符串,放入占位位置 %d 將內容轉換成整數,放入占位位置 %f 將內容轉換成浮點型,放入占位位置 示例:
name ="小孤獨" age = 16 height = 1.56 message ="我是%s,我的年齡是:%d,我的身高是:%f米" %(name, age, height) print(message) # 輸出:我是:小孤獨,我的年齡是:16,我的身高是:1.560000米
2.str.format()
方法
-
Python 2.6+ 引入的更靈活的格式化方法,使用
{}
作為占位符 -
基本用法:
print("Name: {}, Age: {}".format("小孤獨", 16)) # 位置參數 print("Name: {1}, Age: {0}".format(16, "小孤獨")) # 索引參數 print("Name: {name}, Age: {age}".format(name="小孤獨", age=16)) # 關鍵字參數
-
格式控制:
# 數字格式化 print("PI: {:.2f}".format(3.14159)) # 輸出:PI: 3.14(保留兩位小數) print("Hex: {:x}".format(255)) # 輸出:Hex: ff(十六進制)# 對齊與填充 print("{:>10}".format("Hello")) # 右對齊,寬度10 → ' Hello' print("{:<10}".format("Hello")) # 左對齊,寬度10 → 'Hello ' print("{:*^10}".format("Hi")) # 居中并用*填充 → '****Hi****'# 千位分隔符 print("{:,}".format(1000000)) # 輸出:1,000,000
-
引用對象屬性或元素:
person = {"name": "小孤獨", "age": 16} print("Name: {p[name]}, Age: {p[age]}".format(p=person)) # 輸出:Name: 小孤獨, Age: 16
3.f-strings
(格式化字符串字面量)
-
Python 3.6+ 引入,語法簡潔高效,在字符串前加
f
或F
,變量直接嵌入{}
。 -
基本用法:
name = "小孤獨" age = 16 print(f"Name: {name}, Age: {age}") # 輸出:Name: 小孤獨, Age: 16
-
表達式和函數調用:
name = "xiaogudu" age = 16 # 直接計算表達式 print(f"Next year's age: {age + 1}") # 輸出:Next year's age: 17# 調用方法或函數 print(f"Name in uppercase: {name.upper()}") # 輸出:Name in uppercase: XIAOGUDU
-
高級格式控制:
pi = 3.14159 print(f"PI: {pi:.2f}") # 輸出:PI: 3.14 print(f"Hex: {255:x}") # 輸出:Hex: ff print(f"Aligned: {'text':>10}") # 輸出:Aligned: text
-
多行字符串:
name = "小孤獨" age = 16 message = (f"Name: {name}\n"f"Age: {age}\n"f"Square of Age: {age ** 2}" ) print(message) # 輸出:Name: 小孤獨 # Age: 16 # Square of Age: 256
4.模板字符串(string.Template
)
-
Python 標準庫中的簡單模板,通過
$
占位符替換,適合用戶可控的輸入(避免安全風險)from string import Template t = Template("Name: $name, Age: $age") print(t.substitute(name="小孤獨", age=16)) # 輸出:Name: 小孤獨, Age: 16
5.總結對比:
方法 | 優點 | 缺點 | 適用場景 |
---|---|---|---|
% 格式化 | 簡單,兼容舊代碼 | 功能有限,易出錯 | 舊項目或簡單替換 |
str.format() | 功能強大,支持復雜格式 | 語法稍冗長 | 需要兼容 Python 2.6+ |
f-strings | 簡潔高效,支持表達式 | 僅限 Python 3.6+ | 現代 Python 代碼首選 |
string.Template | 安全,適合用戶輸入 | 功能最少 | 用戶可控模板 |
如有不當之處,歡迎批評指正!