python f-string 格式化字符串

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. 填充字符

widthflags 可以与填充字符一起使用,填充字符通常是空格,但也可以是其他字符,如零 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 提供了非常灵活和强大的格式化选项,可以控制输出的宽度、对齐方式、精度和数据类型等。熟练掌握这些格式化规范,可以帮助你在编写程序时生成格式化良好的输出,提升代码的可读性和可维护性。

Scroll to Top