在 f-string 中,{} 中的内容可以使用格式说明符进行更细致的控制,控制格式的具体方式是通过在花括号中使用冒号 : 后接格式化说明符。f"{x:02}" 是一种格式化写法,其中的 02 是一个格式说明符,意味着:格式化数字时,数字最少需要两位,不足两位时用零填充。
以下是一些常见的类似 f"{x:02}" 的格式说明符及其用法:
1. 数字格式化
-
填充与宽度:
f"{x:02}":将x格式化为至少 2 位,不足的位数用零填充。f"{x:05}":将x格式化为至少 5 位,不足的位数用零填充。f"{x:10}":将x格式化为 10 位,默认使用空格填充。
示例:
x = 7 print(f"{x:02}") # 输出 07 print(f"{x:05}") # 输出 00007 print(f"{x:10}") # 输出 ' 7'(9个空格填充) -
对齐:
f"{x:<5}":左对齐,宽度 5 位。f"{x:^5}":居中对齐,宽度 5 位。f"{x:>5}":右对齐,宽度 5 位。
示例:
x = 7 print(f"{x:<5}") # 输出 '7 '(左对齐) print(f"{x:^5}") # 输出 ' 7 '(居中对齐) print(f"{x:>5}") # 输出 ' 7'(右对齐) -
填充字符:
f"{x:.^10}":使用点号.填充,居中对齐,宽度为 10。f"{x:*^10}":使用星号*填充,居中对齐,宽度为 10。
示例:
x = 7 print(f"{x:.^10}") # 输出 '....7.....' print(f"{x:*^10}") # 输出 '****7****'
2. 浮动点数格式化
-
小数位数:
f"{x:.2f}":将x格式化为保留 2 位小数。f"{x:.3f}":将x格式化为保留 3 位小数。
示例:
pi = 3.14159 print(f"{pi:.2f}") # 输出 3.14 print(f"{pi:.3f}") # 输出 3.142 -
科学计数法:
f"{x:.2e}":将x格式化为科学计数法,保留 2 位小数。
示例:
large_number = 123456789 print(f"{large_number:.2e}") # 输出 1.23e+08 -
百分比:
f"{x:.2%}":将x格式化为百分数,保留 2 位小数。
示例:
percentage = 0.567 print(f"{percentage:.2%}") # 输出 56.70%
3. 十进制、十六进制、八进制和二进制格式化
-
十进制:
f"{x:d}":将x格式化为十进制。
示例:
x = 42 print(f"{x:d}") # 输出 42 -
十六进制:
f"{x:x}":将x格式化为小写十六进制。f"{x:X}":将x格式化为大写十六进制。
示例:
x = 255 print(f"{x:x}") # 输出 ff print(f"{x:X}") # 输出 FF -
八进制:
f"{x:o}":将x格式化为八进制。
示例:
x = 64 print(f"{x:o}") # 输出 100 -
二进制:
f"{x:b}":将x格式化为二进制。
示例:
x = 5 print(f"{x:b}") # 输出 101
4. 数字千分位分隔符
-
f"{x:,}":将x格式化为包含千分位分隔符的数字。示例:
large_number = 1000000 print(f"{large_number:,}") # 输出 1,000,000
5. 宽度与对齐结合
可以同时指定宽度、对齐方式和填充字符。例如:
f"{x:*^10}":居中对齐,使用星号填充,总宽度为 10。f"{x:*>10}":右对齐,使用星号填充,总宽度为 10。f"{x:<10}":左对齐,使用空格填充,总宽度为 10。
6. 日期和时间格式化
使用日期格式化字符串来控制日期和时间的格式。
from datetime import datetime
now = datetime.now()
print(f"{now:%Y-%m-%d}") # 输出:2024-12-06
print(f"{now:%H:%M:%S}") # 输出:14:35:45
总结
f-string 的格式化语法非常灵活,可以用于多种场景,包括数字、日期、时间、对齐、填充等。常见的语法包括:
- 填充与宽度:
{x:02},{x:10},{x:.^10} - 浮点数格式:
{x:.2f},{x:.2e},{x:.2%} - 数字格式:
{x:d},{x:x},{x:b},{x:,} - 日期和时间:
{x:%Y-%m-%d},{x:%H:%M:%S} - 对齐与填充:
{x:<5},{x:>5},{x:*^10}
f-string 提供了非常简洁、强大的字符串格式化能力,广泛应用于数据展示和报告生成中。