当前位置:首页 > Python > 正文

Python字符串格式化完全指南:%格式化、str.format()与f-string详解 | Python教程

Python字符串格式化完全指南

深入浅出讲解%格式化、str.format()与f-string技术

为什么需要字符串格式化?

在Python编程中,字符串格式化是将变量、表达式结果或其他数据类型插入到字符串中的过程。它使我们能够:

  • 动态生成字符串内容
  • 创建结构化的输出(如日志消息、用户界面)
  • 控制数字的显示格式(小数位数、千位分隔符等)
  • 提高代码可读性和维护性

Python字符串格式化方法演进

1. % 格式化(传统方法)

Python最早的字符串格式化方法,类似于C语言的printf风格。

基本语法: "字符串 % 值"

name = "Alice"
age = 30
print("Name: %s, Age: %d" % (name, age))
# 输出: Name: Alice, Age: 30

常用占位符:

  • %s - 字符串
  • %d - 十进制整数
  • %f - 浮点数
  • %x - 十六进制整数

2. str.format()方法(Python 2.6+)

更强大、更灵活的字符串格式化方法,使用花括号{}作为占位符。

基本语法: "字符串".format(值)

product = "Laptop"
price = 899.99
print("Product: {0}, Price: ${1:.2f}".format(product, price))
# 输出: Product: Laptop, Price: $899.99

高级特性:

  • 位置参数和关键字参数
  • 访问对象属性和字典键
  • 数字格式化(千位分隔符、百分比等)

3. f-string(Python 3.6+)

现代Python字符串格式化方法,在字符串前加f前缀,直接在{}内写表达式。

基本语法: f"字符串{表达式}"

first_name = "Bob"
last_name = "Smith"
print(f"Full name: {first_name} {last_name.upper()}")
# 输出: Full name: Bob SMITH

主要优点:

  • 语法简洁直观
  • 直接在占位符内执行表达式
  • 性能优于其他方法
  • 提高代码可读性

f-string 高级用法详解

1. 表达式计算

x = 10
y = 25
print(f"Sum: {x + y}, Product: {x * y}")
# 输出: Sum: 35, Product: 250

2. 数字格式化

pi = 3.1415926535
salary = 100000

print(f"Pi: {pi:.4f}")  # 保留4位小数
print(f"Salary: ${salary:,}")  # 千位分隔符
print(f"Hex: {255:#x}")  # 十六进制格式
print(f"Percentage: {0.675:.2%}")  # 百分比

# 输出:
# Pi: 3.1416
# Salary: $100,000
# Hex: 0xff
# Percentage: 67.50%

3. 对齐与填充

header = "Python"
print(f"|{header:<20}|")  # 左对齐
print(f"|{header:^20}|")  # 居中对齐
print(f"|{header:>20}|")  # 右对齐
print(f"|{header:*^20}|") # 居中并用*填充

# 输出:
# |Python              |
# |       Python       |
# |              Python|
# |*******Python*******|

4. 日期格式化

from datetime import datetime
today = datetime.now()
print(f"Today: {today:%Y-%m-%d}")
print(f"Time: {today:%H:%M:%S}")
print(f"Full: {today:%A, %B %d, %Y}")

# 输出:
# Today: 2023-10-15
# Time: 14:30:45
# Full: Sunday, October 15, 2023

方法对比与最佳实践

方法 优点 缺点 适用场景
% 格式化 简单,类似C语言语法 功能有限,类型错误风险 简单脚本,兼容旧代码
str.format() 功能强大,支持复杂格式 语法稍冗长 Python 2.6-3.5项目
f-string 语法简洁,性能最好,可读性强 仅Python 3.6+支持 现代Python项目首选

最佳实践建议:

  • Python 3.6+项目优先使用f-string - 提供最佳可读性和性能
  • 需要兼容旧版本Python时使用str.format()
  • 避免在新项目中使用%格式化
  • 复杂格式化操作考虑使用模板字符串(Template)
  • 用户提供的格式化字符串要使用安全方法(避免f-string直接执行代码)

总结

Python字符串格式化是每个开发者必须掌握的核心技能。从传统的%操作符到强大的str.format(),再到现代高效的f-string,Python提供了多种灵活的字符串格式化方法:

  • f-string 是现代Python(3.6+)的首选方法,语法简洁且性能优异
  • str.format() 在需要兼容旧版本Python时是不错的选择
  • %格式化 主要用于维护旧代码库

无论选择哪种方法,都要注意:

  • 保持代码可读性和一致性
  • 处理用户输入时要防范安全风险
  • 复杂场景考虑使用Python的string.Template

开始在你的Python项目中使用f-string吧,体验更简洁、更强大的字符串格式化!

© 2023 Python字符串格式化教程 | 更多Python技巧请关注我们的博客

发表评论