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

Python format函数完全指南:从基础到高级用法 | Python字符串格式化教程

Python format() 函数完全指南

掌握字符串格式化的艺术 - 从基础到高级用法

format() 函数是什么?

Python中的 format() 函数是用于字符串格式化的强大工具,它提供了一种灵活、易读的方式来构建字符串。

主要特点:
• 更灵活的位置参数和关键字参数
• 支持各种数据类型(数字、字符串、日期等)
• 提供丰富的格式化选项(对齐、填充、精度等)
• 比传统的 % 格式化更现代、更强大

基础使用方法

format() 函数的基本语法是在字符串中使用花括号 {} 作为占位符:

# 基础用法示例
name = "Alice"
age = 30
message = "我的名字是 {},我今年 {} 岁。".format(name, age)
print(message)
# 输出:我的名字是 Alice,我今年 30 岁。

位置参数

# 通过位置索引引用参数
text = "{1} 比 {0} 大 {2} 岁".format("Alice", "Bob", 5)
print(text)
# 输出:Bob 比 Alice 大 5 岁

关键字参数

# 使用关键字参数
info = "姓名: {name}, 年龄: {age}, 职业: {job}".format(
    name="Charlie",
    age=25,
    job="工程师"
)
print(info)
# 输出:姓名: Charlie, 年龄: 25, 职业: 工程师

高级格式化技巧

数字格式化

# 格式化浮点数
pi = 3.1415926535
print("圆周率: {:.2f}".format(pi))      # 保留两位小数
print("科学计数法: {:.2e}".format(123456)) # 科学计数法表示

# 格式化整数
number = 12345
print("千位分隔: {:,}".format(number))   # 添加千位分隔符
print("二进制: {:b}".format(10))         # 二进制表示
print("十六进制: {:X}".format(255))      # 十六进制大写

文本对齐与填充

# 文本对齐
print("左对齐: |{:<15}|".format("text"))    # 左对齐,宽度15
print("右对齐: |{:>15}|".format("text"))    # 右对齐,宽度15
print("居中对齐: |{:^15}|".format("text"))  # 居中对齐,宽度15

# 自定义填充字符
print("填充: |{:*^15}|".format("title"))  # 使用*填充
print("填充: |{:=^20}|".format("分隔线")) # 使用=填充

实际应用示例

表格数据格式化

# 创建对齐的表格
headers = ['姓名', '年龄', '职业', '薪资']
data = [
    ['张三', 28, '工程师', 15000],
    ['李四', 32, '设计师', 18000],
    ['王五', 45, '经理', 25000]
]

print("{:<5} {:<5} {:<8} {:<10}".format(*headers))
print("-" * 30)
for row in data:
    print("{:<5} {:<5} {:<8} ¥{:<10,.2f}".format(*row))

进度条显示

# 简单的进度条实现
import time

def show_progress(total):
    for i in range(total + 1):
        percent = i / total * 100
        bar = '█' * int(percent / 5)
        print("\r进度: |{:<20}| {:.1f}%".format(bar, percent), end="")
        time.sleep(0.1)
    print()

show_progress(50)  # 显示进度条

format() 与 f-string 对比

Python 3.6+ 引入了更简洁的f-string,但format()在动态格式化场景中仍有优势:

# format() 示例
name = "Bob"
score = 95.5
result = "{}的成绩是{:.1f}分".format(name, score)

# f-string 等效写法
result = f"{name}的成绩是{score:.1f}分"

format() 优势

  • 兼容Python 2.6+和Python 3.x
  • 适用于动态格式字符串
  • 支持更复杂的格式化操作
  • 处理用户输入更安全

何时选择f-string

  • Python 3.6+环境
  • 简单变量插值
  • 需要更简洁的语法
  • 提高代码可读性

总结

Python的format()函数提供了强大而灵活的字符串格式化能力:

  • 基础用法: 使用{}作为占位符,支持位置参数和关键字参数
  • 数字格式化: 控制精度、千位分隔、进制转换等
  • 文本对齐: 通过:<、:>、:^实现左、右、居中对齐
  • 填充字符: 自定义填充字符丰富显示效果
  • 实际应用: 表格数据展示、进度条等实用场景
  • 与f-string比较: 各有优势,根据场景选择

掌握format()函数能显著提升你处理字符串的能力,是每个Python开发者必备的核心技能之一。

发表评论