在 Python 编程中,字符串格式化是一项基础而重要的技能。Python 提供了多种字符串格式化方式,如 % 运算符、str.format() 方法以及 f-string(Python 3.6+)。其中,str.format() 是一种功能强大、灵活度高的格式化方式,广泛用于构建动态字符串、格式化输出数据、拼接变量与文本等场景。
本文将围绕 str.format() 函数的定义、语法结构、参数使用方式、功能作用以及典型应用场景进行详细讲解,帮助开发者全面掌握这一实用的字符串格式化工具。
str.format() 是 Python 中 str 类的一个方法,用于将变量插入字符串中的指定位置,并按照指定格式进行输出。与传统的 % 格式化方式相比,format() 更加灵活,支持多种数据类型和格式控制。
主要作用
将变量插入字符串;
控制输出格式(如小数点位数、对齐方式、进制转换等);
实现动态字符串拼接;
提升代码可读性和可维护性。
语法结构
"字符串模板".format(参数1, 参数2, ...)
模板中使用 {} 作为占位符,format() 方法会依次将参数填入对应位置。
按顺序填充变量
name = "Alice"
age = 25
print("我的名字是 {}, 年龄是 {}".format(name, age))
# 输出:我的名字是 Alice, 年龄是 25
指定索引填充变量
可以使用数字索引指定填充顺序,适合参数复用或调整顺序:
print("第0个参数是:{0},第1个参数是:{1}".format("Hello", "World"))
# 输出:第0个参数是:Hello,第1个参数是:World
使用关键字参数
通过关键字指定参数,提升可读性,适用于参数较多或顺序不固定的情况:
print("姓名:{name}, 年龄:{age}".format(name="Bob", age=30))
# 输出:姓名:Bob, 年龄:30
混合使用位置参数与关键字参数
可以同时使用位置参数和关键字参数,但位置参数必须在关键字参数之前:
print("{0} 和 {name} 都是程序员".format("Alice", name="Bob"))
# 输出:Alice 和 Bob 都是程序员
str.format() 的强大之处在于其支持丰富的格式化选项,可以通过冒号 : 后跟格式说明符来控制输出样式。
控制数字格式
整数格式化:d 表示十进制整数;
浮点数格式化:f 表示浮点数,可以指定小数点位数;
百分比格式化:% 可以将小数转换为百分比;
千分位分隔符:使用 , 表示千分位;
进制转换:b 表示二进制,o 表示八进制,x 表示十六进制(小写),X 表示大写十六进制。
示例:
print("整数:{0:d}".format(1000000)) # 输出:整数:1000000
print("浮点数:{0:.2f}".format(3.14159)) # 输出:浮点数:3.14
print("百分比:{0:.2%}".format(0.75)) # 输出:百分比:75.00%
print("千分位:{0:,}".format(1234567)) # 输出:千分位:1,234,567
print("二进制:{0:b}".format(10)) # 输出:二进制:1010
print("十六进制:{0:x}".format(255)) # 输出:十六进制:ff
控制字符串格式
对齐方式:< 左对齐,> 右对齐,^ 居中对齐;
填充字符:使用 字符 填充空白;
宽度控制:使用数字指定最小宽度。
示例:
print("{0:10}".format("Python")) # 输出:Python (右对齐,总宽度10)
print("{0:<10}".format("Python")) # 输出:Python (左对齐)
print("{0:^10}".format("Python")) # 输出: Python (居中对齐)
print("{0:*^10}".format("Python")) # 输出:**Python** (居中并用 * 填充)
格式化日期时间
结合 datetime 模块,format() 可用于格式化日期和时间:
from datetime import datetime
now = datetime.now()
print("当前时间:{0:%Y-%m-%d %H:%M:%S}".format(now))
# 输出:当前时间:2025-04-05 12:30:45(根据实际时间变化)
格式化对象属性
可以使用 . 访问对象的属性进行格式化:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("John", 28)
print("姓名:{0.name}, 年龄:{0.age}".format(p))
# 输出:姓名:John, 年龄:28
格式化字典
可以直接格式化字典中的键值:
data = {"name": "Alice", "age": 25}
print("姓名:{0[name]}, 年龄:{0[age]}".format(data))
# 输出:姓名:Alice, 年龄:25
嵌套格式化
可以在格式字符串中嵌套变量和格式控制:
print("{0:{1}}".format("Python", "^10")) # 输出: Python
格式化多行字符串
format() 也适用于多行字符串,常用于模板输出:
template = """姓名:{name}
年龄:{age}
城市:{city}"""
print(template.format(name="Alice", age=25, city="北京"))
输出:
姓名:Alice
年龄:25
城市:北京
格式化时使用函数或表达式
可以在 format() 中使用函数、表达式,甚至对象:
print("结果是:{0}".format(2 ** 10)) # 输出:结果是:1024
动态生成日志信息
在日志系统中,format() 可用于动态插入变量,生成结构化日志:
log = "[{level}] {time}: {message}".format(
level="INFO",
time="2025-04-05 10:00:00",
message="用户登录成功"
)
print(log)
# 输出:[INFO] 2025-04-05 10:00:00: 用户登录成功
生成用户提示信息
在用户交互界面中,format() 可以用于生成个性化提示:
user = "admin"
print("欢迎回来,{}!".format(user)) # 输出:欢迎回来,admin!
数据展示与报表生成
在数据分析、报表生成等场景中,format() 可以实现整齐的输出格式:
name = "张三"
score = 92.5
print("{0:10} | {1:5.2f}".format(name, score))
# 输出:张三 | 92.50
构建 SQL 查询语句
虽然不推荐直接拼接 SQL 语句(存在注入风险),但在非数据库交互场景中,format() 可用于构建查询语句:
query = "SELECT * FROM users WHERE id = {id}".format(id=123)
print(query) # 输出:SELECT * FROM users WHERE id = 123
str.format() 是 Python 中一个非常强大、灵活的字符串格式化方法,它不仅支持位置参数、关键字参数,还支持丰富的格式化选项,如数字格式、字符串对齐、日期格式等,是构建动态字符串、生成结构化输出的重要工具。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
通过出发地、目的地、出发日期等信息查询航班信息。
通过站到站查询火车班次时刻表等信息,同时已集成至聚合MCP Server。火车票订票MCP不仅能赋予你的Agent火车时刻查询,还能支持在线订票能力。
通过车辆vin码查询车辆的过户次数等相关信息
验证银行卡、身份证、姓名、手机号是否一致并返回账户类型
查询个人是否存在高风险行为