Python f-string
格式化字符串的完整格式说明是通过冒号(:
)后面的格式规范符来实现的。这个格式化规范符可以用来控制数字、字符串、时间日期等数据类型的输出格式。以下是完整的格式说明,包括常见的格式化选项及其用法。
基本格式
f"{expression:{width}{flags}{precision}{type}}"
- expression: 要格式化的值(例如数字、字符串等)。
- width: 输出的最小宽度。如果输出的值宽度小于指定的宽度,则会进行填充。
- flags: 选择性标志,用于指定填充方式、对齐方式等。
- precision: 用于控制浮动点数的小数点精度或其他数值精度。
- type: 用于指定格式类型,例如浮动点数、整数、字符串等。
1. 宽度 (width
)
width
用于指定输出的最小宽度。如果输出的内容小于这个宽度,Python 会通过填充来达到指定的宽度。
value = 123
print(f"{value:10}") # 输出:' 123',宽度10,不足的部分用空格填充
如果数字宽度较长,则不进行截断。
2. 对齐标志 (flags
)
>
: 右对齐(默认行为)。<
: 左对齐。^
: 居中对齐。=
: 对齐符号,数字类型使用此标志会将符号与数字对齐。
填充字符也可以使用特定字符,例如空格、零等。可以指定填充字符,如以下示例中的零填充。
示例:
value = 123
print(f"{value:>10}") # 输出:' 123',右对齐
print(f"{value:<10}") # 输出:'123 ',左对齐
print(f"{value:^10}") # 输出:' 123 ',居中对齐
print(f"{value:010}") # 输出:'0000000123',用零填充
3. 精度 (precision
)
精度通常用于浮动点数格式化,指定小数点后保留的位数。例如,.2f
表示保留 2 位小数。
示例:
value = 123.45678
print(f"{value:.2f}") # 输出:'123.46',保留两位小数
对于其他类型,精度也有不同的应用。例如,字符串可以使用精度来限制输出的字符数量。
text = "Hello, world!"
print(f"{text:.5s}") # 输出:'Hello',只取前五个字符
4. 类型标识符 (type
)
类型标识符决定了如何表示和格式化数值、字符串等常见数据类型。常见的类型标识符包括:
d
: 十进制整数(整数)。f
: 浮动点数(默认的浮动点数)。e
: 科学计数法表示浮动点数。g
: 科学计数法或浮动点数(根据精度选择合适格式)。%
: 百分比格式,将浮动点数乘以 100 并附加%
符号。s
: 字符串。x
: 十六进制小写。X
: 十六进制大写。
示例:
value = 123456
print(f"{value:d}") # 输出:'123456',十进制整数
print(f"{value:x}") # 输出:'1e240',十六进制小写
print(f"{value:X}") # 输出:'1E240',十六进制大写
floating_point = 123.4567
print(f"{floating_point:.2f}") # 输出:'123.46',浮动点数保留两位小数
print(f"{floating_point:e}") # 输出:'1.234568e+02',科学计数法表示
print(f"{floating_point:%}") # 输出:'12345.67%',百分比格式
5. 填充字符
width
和 flags
可以与填充字符一起使用,填充字符通常是空格,但也可以是其他字符,如零 0
。
value = 123
print(f"{value:0>10}") # 输出:'0000000123',用零填充至宽度 10
6. 综合示例
以下是一个更复杂的例子,展示了所有格式化选项的组合:
value = 123.4567
name = "Python"
# 保留两位小数,右对齐,总宽度 10,填充零
print(f"{value:010.2f}") # 输出:'0000123.46'
# 保留三位小数,左对齐,总宽度 10,填充空格
print(f"{value:<10.3f}") # 输出:'123.457 '
# 科学计数法表示,保留两位小数
print(f"{value:.2e}") # 输出:'1.23e+02'
# 百分比格式,保留两位小数
print(f"{0.12345:.2%}") # 输出:'12.35%'
# 字符串格式,最多保留 5 个字符
print(f"{name:.5s}") # 输出:'Pytho'
# 整数格式,宽度为 10,填充零
number = 42
print(f"{number:010d}") # 输出:'0000000042'
7. f-string
细节
- 精度控制:你可以对浮动点数、小数、字符串等精度进行控制。对于浮动点数,精度影响的是小数点后面的位数。
- 对齐控制:通过
>
,<
,^
来控制数字或字符串的对齐方式。 - 填充字符:通过设置宽度和对齐方式来填充字符,默认填充空格,也可以用其他字符。
总结
Python f-string
提供了非常灵活和强大的格式化选项,可以控制输出的宽度、对齐方式、精度和数据类型等。熟练掌握这些格式化规范,可以帮助你在编写程序时生成格式化良好的输出,提升代码的可读性和可维护性。