zfill()
zfill() 是 Python 字串string方法之一,用于在字串左侧填充零,使其达到指定的长度。这对于格式化数字(特别是需要在数字前补零的情况)非常有用,比如日期、时间或序号的格式化。
str.zfill(width)
width:指定的最小总长度。如果原始字串的长度小于 width,则会在左侧补零;若大于或等于 width,则不会做变动。
范例
范例 1:简单补零
num = "42"
padded_num = num.zfill(5)
print(padded_num) # 输出:\'00042\'
这里,num 长度为 2,小于指定的宽度 5,因此在左侧填充了三个零。
范例 2:负数的情况
num = "-42"
padded_num = num.zfill(5)
print(padded_num) # 输出:\'-0042\'
对于负数,zfill() 会在负号后填充零,以保持负号在最左侧。
范例 3:字串长度超过指定宽度
text = "12345"
padded_text = text.zfill(3)
print(padded_text) # 输出:\'12345\'
在此例中,字串长度已经大于 width,因此不会进行补零操作。
使用场景
当需要格式化数字并在它们前面加零时。生成固定宽度的 ID 或序列号。时间格式化时,确保分和秒是两位数字。
f"{i:0d}"
各部分含义:f"{}":使用 f-string 是 Python 格式化字串的一种方式,f"" 字符串内的花括号 {} 用来表示需要替换的变量或表达式。
{i:0d}:花括号内的内容是格式化指令,详细分为以下几个部分:
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:十进位的整数格式。
string 填充和对齐
从 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 浮点数格式化的基本语法
f-string 浮点数格式的基本语法是 {value:.nf},其中:
- value 是要格式化的数字变数。
- n 是显示的小数点位数。
- .f 表示要将数字显示为浮点数格式。
pi = 3.14159
print(f"{pi:.2f}") # 输出:\'3.14\'
num = 5.6789
print(f"{num:.2f}") # 输出:\'5.68\'
print(f"{num:.3f}") # 输出:\'5.679\'
- width 指定输出的总宽度(包括小数点和小数位数)。
- .nf 表示小数点后显示的位数。
num = 3.14
print(f"{num:8.2f}") # 总宽度 8,小数点后 2 位,输出:\' 3.14\'
print(f"{num:8.3f}") # 总宽度 8,小数点后 3 位,输出:\' 3.140\'
string 中的分隔线
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 的千位分隔符
在 f-string 中,可以在数字后加上 :,,这样会自动以千位分隔显示。
num = 1234567890
print(f"{num:,}")
#1,234,567,890