zfill() 是 Python 字串string方法之一,用於在字串左側填充零,使其達到指定的長度。
這對於格式化數字(特別是需要在數字前補零的情況)非常有用,比如日期、時間或序號的格式化。
str.zfill(width)
width:指定的最小總長度。如果原始字串的長度小於 width,則會在左側補零;若大於或等於 width,則不會做變動。
num = "42"
padded_num = num.zfill(5)
print(padded_num) # 輸出:'00042'
這裡,num 長度為 2,小於指定的寬度 5,因此在左側填充了三個零。
num = "-42"
padded_num = num.zfill(5)
print(padded_num) # 輸出:'-0042'
對於負數,zfill() 會在負號後填充零,以保持負號在最左側。
text = "12345"
padded_text = text.zfill(3)
print(padded_text) # 輸出:'12345'
在此例中,字串長度已經大於 width,因此不會進行補零操作。
當需要格式化數字並在它們前面加零時。
生成固定寬度的 ID 或序列號。
時間格式化時,確保分和秒是兩位數字。
f"{i:0d}"
各部分含義:f"{}"
:使用 f-string 是 Python 格式化字串的一種方式,
f"" 字符串內的花括號 {} 用來表示需要替換的變量或表達式。
i
:需要被格式化的變量(這裡是變量 i)。:
冒號分隔符,表示接下來是格式化規則。0d
:表示以十進位(d)的方式輸出,並在左側補零 (0) 使數字達到指定的寬度。
在 Python 中,f"{i:0d}" 是一種使用 f-string 格式化字串的方法,它讓數字 i 以指定的格式出現在字串中
假設我們要讓數字 i 顯示為 3 位數字,不足 3 位的部分以 0 補足,那麼可以這樣使用:
i = 5
formatted_i = f"{i:03d}"
print(formatted_i) # 輸出:'005'
這裡的 03d 表示:
-0:在數字前面補零。
-3:總長度為 3 位。
-d:十進位的整數格式。
從 Python 3.6 開始,f-string 支持對字串進行靈活的填充和對齊控制,語法簡潔,功能強大。
text = "Hello"
result = f"{text:*>10}" # `*` 為填充字符,總寬度為 10
print(result) # 輸出:'*****Hello'
text = "Hello"
result = f"{text:*<10}"
print(result) # 輸出:'Hello*****'
text = "Hello"
result = f"{text:*^10}"
print(result) # 輸出:'**Hello***'
f-string 浮點數格式的基本語法是 {value:.nf}
,其中:
pi = 3.14159
print(f"{pi:.2f}") # 輸出:'3.14'
num = 5.6789
print(f"{num:.2f}") # 輸出:'5.68'
print(f"{num:.3f}") # 輸出:'5.679'
{value:width.nf}:
num = 3.14
print(f"{num:8.2f}") # 總寬度 8,小數點後 2 位,輸出:' 3.14'
print(f"{num:8.3f}") # 總寬度 8,小數點後 3 位,輸出:' 3.140'
print("-" * 40) # 輸出: ----------------------------------------
print("=" * 40) # 輸出: ========================================
2.使用 center() 方法製作帶文本的分隔線
可以在分隔線中加入文本,並用 center() 方法自動居中,讓分隔線看起來更具說明性:
print(" Welcome ".center(40, "-")) # 輸出: ----------- Welcome ------------
print(" Chapter 1 ".center(40, "=")) # 輸出: ========== Chapter 1 ==========
width = 50
char = "*"
print(f"{char * width}") # 使用 width 控制長度,輸出:*********************************
4.分隔線函數
可以寫一個分隔線函數,靈活地控制字符、長度等。
def separator(char="-", length=40, text=""):
if text:
print(f" {text} ".center(length, char))
else:
print(char * length)
separator("*", 50, " Section ")
separator("#", 30)
***************** Section *****************
##############################
在 f-string 中,可以在數字後加上 :,,這樣會自動以千位分隔顯示。
num = 1234567890
print(f"{num:,}")
#1,234,567,890