name = "张三"
age = 25
print("我叫%s,今年%d岁" % (name, age))
# 输出: 我叫张三,今年25岁
常用格式符:
%s - 字符串%d - 整数%f - 浮点数%.2f - 保留两位小数# 位置参数
print("我叫{},今年{}岁".format("张三", 25))
# 命名参数
print("我叫{name},今年{age}岁".format(name="张三", age=25))
# 数字格式化
print("价格: {:.2f}".format(99.876)) # 保留两位小数
print("百分比: {:.1%}".format(0.876)) # 百分比格式
name = "张三"
age = 25
score = 95.5
# 基本使用
print(f"我叫{name},今年{age}岁")
# 表达式计算
print(f"明年我{age + 1}岁")
# 格式控制
print(f"分数: {score:.2f}") # 保留两位小数
print(f"分数: {score:08.2f}") # 总宽度8,不足补0
# 对齐
print(f"{'左对齐':<10}|{'居中':^10}|{'右对齐':>10}")
from string import Template
template = Template("我叫$name,今年$age岁")
result = template.substitute(name="张三", age=25)
print(result) # 输出: 我叫张三,今年25岁
# safe_substitute防止缺少变量报错
safe_template = Template("欢迎$user访问")
result = safe_template.safe_substitute() # 不会报错
# 简单拼接(性能较差)
name = "张三"
result = "我叫" + name + ",今年" + str(25) + "岁"
# join方法(性能较好)
parts = ["我叫", name, ",今年", str(25), "岁"]
result = "".join(parts)
# 字符串重复
print("-" * 20) # 输出20个减号
| 方法 | Python版本 | 优点 | 缺点 |
|---|---|---|---|
% 格式化 |
所有版本 | 简洁,类似C语言 | 类型错误风险,不够灵活 |
str.format() |
2.6+ | 功能强大,支持复杂格式化 | 语法稍复杂 |
| f-string | 3.6+ | 简洁高效,可读性好 | 需要Python 3.6+ |
Template |
所有版本 | 安全,防注入攻击 | 功能有限 |
| 字符串拼接 | 所有版本 | 简单直观 | 性能差,代码冗长 |
示例:各种方法的相同功能实现
name, age, score = "李四", 30, 88.456
# 1. % 格式化
print("姓名:%s, 年龄:%d, 分数:%.2f" % (name, age, score))
# 2. str.format()
print("姓名:{}, 年龄:{}, 分数:{:.2f}".format(name, age, score))
# 3. f-string(推荐)
print(f"姓名:{name}, 年龄:{age}, 分数:{score:.2f}")
# 4. Template
from string import Template
t = Template("姓名:$name, 年龄:$age, 分数:$score")
print(t.substitute(name=name, age=age, score=f"{score:.2f}"))
根据你的具体需求选择合适的格式化方法,现代Python开发中f-string是首选。