如何使用 Python f-string 格式化字符串
Posted on Wed, 25 Dec 2024 16:10:18 +0800 by LiangMingJian
前言
在 Python 中,f-string 全称 formatted string literals,支持用户在字符串前添加前缀 f 或 F,通过 {expression} 表达式,来将数值直接添加到字符串中。
基本使用 f'{expression}'
number = 5
print(f'输出是:{number}')
# 输出:输出是 5
在字符串前添加 f,然后在字符串里通过 {} 包裹数值或表达式,即可将对应数据应用到字符串中。
格式说明符 :
在 {} 中提供可选的格式说明符 :,为用户更好的控制格式化值创造条件。
格式说明符的功能支持:对齐填充,正负标记,类型转换,精度,分组等内容。
对齐填充
对齐支持选项:
<:左对齐>:右对齐^:居中=:强制对齐正负符号后的数字。
在对齐时,除了要写入对齐选项,往往还要结合填充选项和长度选项。在对齐选项的前面添加填充选项(单个字符或者单个数字),在对齐选项的后面添加对齐的长度。
print(f"{1:*<6}")
# 输出:1*****,左对齐,往右边填充数据
print(f"{1:2<6}")
# 输出:122222,当然也可以填充数字
print(f"{1:*>6}")
# 输出:*****1,右对齐,往左边填充数据
print(f"{1:*^6}")
# 输出:**1***,居中,在两边填充数据
print(f"{-1:*=6}")
# 输出:-****1,在符号后面填充数据,直到包括负号有 6 位
特别的,Python 提供字段 0 用于感知正负号的零填充,适用于数字的补 0 对齐。
print(f"{1:06}")
# 输出:000001,数字前补 0 到 6 位
print(f"{-1:06}")
# 输出:-00001,对负数,也一样补 0 到整个字符串有 6 位
正负标记
正负标记选项:
+:无论正负号都显示-:只显示负号:空格,自适应在正数前空格,负数前加负号
print(f"{1:+}")
print(f"{-1:+}")
# 输出:+1 和 -1
print(f"{1:-}")
print(f"{-1:-}")
# 输出:1 和 -1
print(f"{1: }")
print(f"{-1: }")
# 输出: 1(前面有个空格)
# 输出:-1
类型转换
类型标记:
s 或 None:字符串类型,默认的类型,可以省略b:以二进制格式输出d:以十进制格式输出o:以八进制格式输出x:以十六进制格式输出,其中英文字母为小写X:以十六进制格式输出,其中英文字母为大写n:以十进制格式输出,但会根据系统(除了中文系统)自动的在合适区域插入数字分隔符,如 1,000,000c:将输入的数字自动转换为对应 Unicode 字符输出e, E:以科学计数法输出f, F:以定点表示法输出g, G:智能选择定点表示法或科学计数法输出%:以百分比进行输出
print(f"{100000:b}") # 11000011010100000
print(f"{100000:d}") # 100000
print(f"{100000:o}") # 303240
print(f"{100000:x}") # 186a0
print(f"{100000:X}") # 186A0
print(f"{80:c}")
# 输出:P,P 的 Unicode 十进制表示为 80
print(f"{100:e}") # 1.000000e+02
print(f"{100:E}") # 1.000000E+02
print(f"{0.1:f}") # 0.100000
print(f"{0.1:F}") # 0.100000
print(f"{0.1:g}") # 0.1
print(f"{0.00000001:g}") # 1e-08
print(f"{0.00000001:G}") # 1E-08
print(f"{0.1:%}") # 10.000000%
特别的,Python 提供字段 # 用于在输出二进制,八进制,十六进制数据时,在数据前面添加对应的 0b,0o,0x 标记。
print(f"{1000:#b}") # 0b1111101000
print(f"{1000:#o}") # 0o1750
print(f"{1000:#x}") # 0x3e8
print(f"{1000:#X}") # 0X3E8
精度
进度标记:.precision ,在点后面填写所需要展示的精度内容,需要注意,该标记必须搭配定点表示法标记 f, F 或百分比标记 % 一起使用。
print(f"{100:.2f}")
print(f"{0.1:.2f}")
print(f"{0.1:.2%}")
# 输出:100.00 和 0.10 和 10.00%
分组
分组标记:
,:对千位以上数字按每 4 个数位插入逗号作为分组标记。_:对于千位以上数字,或二进制,八进制,十六进制等格式数字,按每 4 个数位插入分组标记。
print(f"{10000:,}")
print(f"{10000:_}")
# 输出:10,000 和 10_000
print(f"{100000:_b}")
# 输出:1_1000_0110_1010_0000
print(f"{100000:_o}")
# 输出:30_3240
print(f"{100000:_x}")
# 输出:1_86a0
print(f"{100000:_X}")
# 输出:1_86A0
特别的
Python 提供特殊的 = 标记允许是使用上述格式化字符输出时,将表达式直接输出,而不是只输出表达式结果。
bugs = 'roaches'
print(f'Debugging {bugs=}')
# 输出:Debugging bugs='roaches'