Python 字符串格式化:初學者全方位指南

你好,有抱負的 Python 程式設計師!很高興能成為你在這個令人興奮的字符串格式化世界之旅中的嚮導。作為一個教了多年 Python 的老師,我可以向你保證,掌握字符串格式化就像學習用文字繪畫一樣 - 它既實用又具有創造力。那麼,讓我們深入探索 Python 字符串格式化的豐富技術!

Python - String Formatting

為什麼字符串格式化很重要

在我們深入細節之前,讓我分享一個小故事。我曾經有一個學生,她在顯示數據時遇到了格式化的困難。她正在建造一個天氣應用程式,但不知道如何整齊地展示溫度和濕度。就在那時,字符串格式化成為了她的救星!在這個教程結束時,你將能夠輕鬆應對類似的挑戰。

現在,讓我們來探索 Python 的各種字符串格式化方法,從基礎開始,逐漸進階到更複雜的技術。

使用 % 運算符

% 運算符是 Python 中最古老的字符串格式化方法。雖然它在現代 Python 中不如以前流行,但理解它對於你可能會遇到的舊代碼庫至關重要。

基本語法

print("Hello, %s!" % "World")

在這個例子中,%s 是字符串的佔位符,而 "World" 是替換它的值。輸出將會是:

Hello, World!

多個值

你可以使用多個佔位符:

name = "Alice"
age = 25
print("My name is %s and I am %d years old." % (name, age))

輸出:

My name is Alice and I am 25 years old.

在這裡,%s 用於字符串,而 %d 用於整數。值作為元組提供。

格式指定符

你可以更精確地控制格式:

pi = 3.14159
print("Pi is approximately %.2f" % pi)

輸出:

Pi is approximately 3.14

.2f 指定我們希望浮點數有兩位小數。

使用 format() 方法

format() 方法是一種更現代、更靈活的字符串格式化方法。它是我個人最喜歡的方法,因為它的可讀性和多用途。

基本語法

print("Hello, {}!".format("World"))

輸出:

Hello, World!

多個值

name = "Bob"
age = 30
print("My name is {} and I am {} years old.".format(name, age))

輸出:

My name is Bob and I am 30 years old.

位置參數

你可以指定參數的順序:

print("{1} is {0} years old.".format(25, "Charlie"))

輸出:

Charlie is 25 years old.

命名參數

為了更好的可讀性:

print("The {animal} jumped over the {object}.".format(animal="cow", object="moon"))

輸出:

The cow jumped over the moon.

使用 f-strings(格式化字符串字面量)

f-strings,在 Python 3.6 中引入,是我首選的字符串格式化方法。它們簡潔、可讀且強大。

基本語法

name = "David"
age = 35
print(f"My name is {name} and I am {age} years old.")

輸出:

My name is David and I am 35 years old.

f-strings 內的表达式

你可以在花括號內放入任何有效的 Python 表達式:

x = 10
y = 20
print(f"The sum of {x} and {y} is {x + y}")

輸出:

The sum of 10 and 20 is 30

格式指定符

f-strings 也支持格式指定符:

import math
print(f"The value of pi is approximately {math.pi:.2f}")

輸出:

The value of pi is approximately 3.14

使用字符串模板類

字符串模板類提供了更簡單的語法,特別是在處理用戶提供的字符串時非常有用。

基本使用

from string import Template

t = Template("Hello, $name!")
print(t.substitute(name="Eve"))

輸出:

Hello, Eve!

多個替換

t = Template("$who likes $what")
d = {"who": "Everyone", "what": "Python"}
print(t.substitute(d))

輸出:

Everyone likes Python

方法比較

以下是不同字符串格式化方法的快速比較:

方法 优點 缺點
% 運算符 基本使用簡單 複雜格式化時可讀性較低
format() �靈活,可讀 較 f-strings 稍微冗長
f-strings 簡潔,允許表達式 只在 Python 3.6+ 可用
Template 對用戶輸入安全 格式化選項有限

結論

恭喜!你剛剛完成了 Python 字符串格式化方法的全面之旅。從經典的 % 運算符到現代的 f-strings,你现在擁有了讓你的字符串閃光的工具箱。記住,就像編程中的任何技能一樣,掌握需要練習。所以,不要猶豫在 your own projects 中嘗試這些方法。

在我們結束之前,這裡有一個小挑戰給你:嘗試創建一個簡單的程式,使用我們討論過的每種方法來格式化並顯示你喜歡的書籍或電影的資訊。這是一種讓你的理解更加牢固並找出你偏好哪種方法的好方法。

編程愉快,願你的字符串永遠格式正確!

Credits: Image by storyset