Python f-string 格式化字符串
掌握 f-string 的完整用法,包括表达式嵌入、格式化控制、对齐、日期格式等高级技巧。 · 难度:入门 · +15XP
f-string 介绍
Python 3.6 引入的 f-string(格式化字符串字面量)是目前最推荐的字符串格式化方式。它通过在字符串前加 f 或 F,允许你在花括号 {} 中直接嵌入 Python 表达式。f-string 比 % 格式化和 .format() 方法更简洁、更快速。
基本用法
name = "Alice"
age = 30
print(f"我叫{name},今年{age}岁。")
# 输出: 我叫Alice,今年30岁。
# 嵌入表达式
print(f"明年我{age + 1}岁。") # 输出: 明年我31岁。
# 调用方法
print(f"名字大写: {name.upper()}") # 输出: 名字大写: ALICE
格式化控制
| 语法 | 说明 | 示例 |
|---|---|---|
{value:<10} | 左对齐,宽度10 | f"{'左':<10}" |
{value:>10} | 右对齐,宽度10 | f"{'右':>10}" |
{value:^10} | 居中对齐,宽度10 | f"{'中':^10}" |
{value:.2f} | 浮点数保留2位小数 | f"{3.14159:.2f}" → '3.14' |
{value:,.2f} | 千位分隔+2位小数 | f"{1234567.89:,.2f}" → '1,234,567.89' |
{value:%} | 百分比格式 | f"{0.85:%}" → '85.000000%' |
{value:.2%} | 百分比保留2位小数 | f"{0.8567:.2%}" → '85.67%' |
高级技巧
# 日期格式化
from datetime import datetime
now = datetime.now()
print(f"当前时间: {now:%Y-%m-%d %H:%M:%S}") # 输出: 2024-01-15 14:30:00
# 使用字典
person = {"name": "Bob", "age": 25}
print(f"{person['name']} {person['age']}岁") # 注意:字典键要用引号
# 使用 repr() 显示原始字符串
path = "C:\\Users\\test"
print(f"路径: {path!r}") # 输出: 路径: 'C:\\Users\\test'
# 多行 f-string
name = "Charlie"
message = (
f"姓名: {name}
"
f"年龄: {30}
"
f"城市: 北京"
)
print(message)
注意事项
- 花括号本身需要转义:
{{和}}输出单个花括号 - f-string 内部不能使用反斜杠转义,但可以在外部处理
- 从 Python 3.12 开始,f-string 支持嵌套引号,更加灵活
- 性能上,f-string 通常比
.format()快 2-5 倍
练习提示
在下方代码中,使用 f-string 完成:1) 打印一个表格行,将 product 左对齐占15字符,price 右对齐占10字符并保留2位小数;2) 打印当前日期(格式:2024年01月15日);3) 将 ratio 格式化为百分比,保留1位小数。