Blog

Python f-string 格式化速查

Python f-string 格式化速查:数字格式、对齐、用等号调试的小技巧、日期,以及怎样输出花括号本身。每个例子都附上真实输出。

f-string 会先计算花括号里的表达式,再把结果放进字符串。它比 %.format() 快,而且读起来的顺序和你想的顺序一致。

冒号后面的部分叫格式规范(format specification),大多数实用的功能都在这里。

基础用法

引号前面的 f 让花括号生效。

# the basics
name, age = 'ada', 36
print(f'{name} is {age}')

输出:

ada is 36

任何表达式都能放进去

方法调用、索引、算术运算和比较都可以。

# any expression fits inside the braces
items = ['a', 'b', 'c']
print(f'{len(items)} items, first is {items[0].upper()}')
print(f'{age * 2} and {age > 30}')

输出:

3 items, first is A
72 and True

表达式要写短。如果得想一想才看得懂,就在上一行先给它起个名字。

数字格式

冒号之后依次是:填充和对齐,然后是宽度,最后是精度和类型。

# number formatting
price = 1234.5678
print(f'{price:.2f}')
print(f'{price:,.2f}')
print(f'{price:>12.2f}|')
print(f'{price:<12.2f}|')
print(f'{price:^12.2f}|')
print(f'{0.4567:.1%}')

输出:

1234.57
1,234.57
     1234.57|
1234.57     |
  1234.57   |
45.7%

< 是左对齐,> 是右对齐,^ 是居中。逗号会加上千位分隔符,% 会乘以 100 并加上百分号。

让列对齐

宽度加上对齐,就足够在控制台里打出清楚的表格。

# padding and alignment for tables
rows = [('apple', 3), ('bread', 12), ('milk', 1)]
for item, qty in rows:
    print(f'{item:<10}{qty:>4}')

输出:

apple        3
bread       12
milk         1

用等号调试

在末尾加上 =,会把表达式和它的值一起打印出来。这是 Python 里最快的 print 调试法。

# the = suffix prints the expression too
total = sum(q for _, q in rows)
print(f'{total=}')
print(f'{len(rows)=}')

输出:

total=16
len(rows)=3

日期和其他类型

格式规范会交给对象本身处理,所以只要有 __format__ 方法,就有自己的一套迷你格式语言。日期用的是 strftime 格式码。

# dates and other __format__ types
import datetime
when = datetime.datetime(2026, 8, 20, 14, 30)
print(f'{when:%d %B %Y}')
print(f'{when:%H:%M}')

输出:

20 August 2026
14:30

输出花括号本身

写两遍就行。

# literal braces are doubled
print(f'{{not a placeholder}} but {name} is')

输出:

{not a placeholder} but ada is

补零、正负号和填充字符

宽度前面加 0,就用 0 补齐。加号会强制显示正负号。对齐符号前面的任意字符会成为填充字符。

# fill characters and signs
print(f'{42:05d}')
print(f'{42:+d} {-42:+d}')
print(f'{"title":*^20}')

输出:

00042
+42 -42
*******title********

要点

  • 格式规范写在花括号里的冒号后面。
  • :,.2f 能搞定大多数金额格式。
  • f"{value=}" 会同时打印表达式和值。
  • 想输出花括号本身,就写两个。

提醒一句:千万不要用 f-string 拼 SQL 或 shell 命令。数据库要用驱动自带的参数化支持,subprocess 要传列表。

这篇文章对你有帮助吗?

点一颗爱心来评分!

平均评分 0 / 5. 投票总数: 0

还没有人投票。来做第一个评分的人吧。