Python系列教程
Python字符串格式化全攻略:让代码输出更优雅
2025-10-25 3 0
简介 Python字符串格式化全攻略:让代码输出更优雅
Python字符串格式化全攻略:让代码输出更优雅
作为Python新手,你是否曾经为如何美观地输出字符串而烦恼?今天我们来彻底解决这个问题!Python提供了多种字符串格式化的方法,从传统的%操作符到现代化的f-string,总有一款适合你。
为什么需要字符串格式化?
先看一个例子,没有格式化时的尴尬:
python
name = "李华"
age = 25
score = 95.5
# 不优雅的方式
print(name + "今年" + str(age) + "岁,考试成绩是" + str(score) + "分")
# 优雅的方式
print(f"{name}今年{age}岁,考试成绩是{score}分")显然,第二种方式更清晰易读!
方法一:f-string(最推荐!)
f-string是Python 3.6引入的新特性,语法简洁,功能强大。
基础用法
python
name = "王小明"
age = 20
height = 175.5
# 直接在字符串前加f,变量用{}包裹
info = f"姓名:{name},年龄:{age},身高:{height}"
print(info)# 输出:姓名:王小明,年龄:20,身高:175.5在表达式中进行计算
python
a = 10b = 3
print(f"{a} + {b} = {a + b}")
# 输出:10 + 3 = 13
print(f"{a} 的平方是 {a**2}")
# 输出:10 的平方是 100格式化数字
python
price = 19.99
percentage = 0.856
# 控制小数位数
print(f"价格:{price:.2f}元")
# 输出:价格:19.99元
print(f"及格率:{percentage:.1%}")
# 输出:及格率:85.6%
print(f"及格率:{percentage:.2%}")
# 输出:及格率:85.60%
# 整数填充
number = 42
print(f"编号:{number:05d}")
# 输出:编号:00042方法二:format()方法
在f-string出现之前,format()是最常用的格式化方法。
基础用法
python
# 按顺序传递参数
text1 = "{}今年{}岁".
format("张伟", 25)
print(text1)
# 输出:张伟今年25岁
# 按索引传递
text2 = "{1}的分数是{0}".format(95, "数学")
print(text2) # 输出:数学的分数是95
# 按关键字传递
text3 = "{name}喜欢{hobby}".format(name="李娜", hobby="游泳")
print(text3)
# 输出:李娜喜欢游泳高级格式化
python
# 数字格式化
pi = 3.1415926
print("圆周率:{:.2f}".format(pi))
# 输出:圆周率:3.14
# 对齐和填充print("{:>10}".format("右对齐"))
# 输出: 右对齐
print("{:<10}".format("左对齐"))
# 输出:左对齐
print("{:^10}".format("居中"))
# 输出: 居中
# 千位分隔符
big_number = 1000000
print("金额:{:,}".format(big_number))
# 输出:金额:1,000,000方法三:%操作符(传统方法)
这是从C语言继承过来的方法,现在使用较少,但你应该了解。
python
name = "赵雷"
age = 30# %s 字符串,%d 整数,%f 浮点数
info = "%s今年%d岁" % (name, age)
print(info) # 输出:赵雷今年30岁
# 浮点数精度控制
score = 95.567
print("分数:%.2f" % score)
# 输出:分数:95.57实战案例:制作学生成绩单
让我们用学到的知识制作一个美观的成绩单:
python
# 学生数据
students = [
{"name": "张三", "chinese": 85, "math": 92, "english": 78},
{"name": "李四", "chinese": 92, "math": 88, "english": 95},
{"name": "王五", "chinese": 78, "math": 85, "english": 90}]
print("=" * 40)
print("{:^38}".format("学生成绩单"))
print("=" * 40)
print("{:<8} {:<8} {:<8} {:<8} {:<8}".format(
"姓名", "语文", "数学", "英语", "平均分"))
print("-" * 40)
for student in students:
avg_score = (student["chinese"] + student["math"] + student["english"]) / 3
print("{:<10} {:<10} {:<10} {:<10} {:<10.1f}".format(
student["name"],
student["chinese"],
student["math"],
student["english"],
avg_score ))print("=" * 40)输出结果:
text
======================================== 学生成绩单 ======================================== 姓名 语文 数学 英语 平均分 ---------------------------------------- 张三 85 92 78 85.0 李四 92 88 95 91.7 王五 78 85 90 84.3 ========================================
实用小技巧
1. 多行f-string
python
name = "孙丽"
age = 22
city = "北京"
profile = f"""
个人信息:
-----------
姓名:{name}年龄:{age}城市:{city}-----------
"""
print(profile)2. 条件表达式在格式化中
python
score = 85
result = f"成绩:{score} - {'及格' if score >= 60 else '不及格'}"
print(result)
# 输出:
成绩:85 - 及格3. 调用方法
python
name = "alice smith"
print(f"姓名:{name.title()}")
# 输出:
姓名:Alice Smith方法对比总结
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| f-string | 语法简洁,性能好 | Python 3.6+ | 新项目,Python 3.6+环境 |
| format() | 功能强大,兼容性好 | 语法相对复杂 | 兼容老版本Python |
| %操作符 | 熟悉C语言易上手 | 功能有限,不推荐 | 维护老代码 |
学习建议
新项目首选f-string - 语法简单直观
掌握数字格式化 -
.2f、,千分位等常用格式多练习对齐功能 - 让输出更美观
理解不同场景 - 根据需求选择合适的格式化方法
记住,字符串格式化的目标就是让代码更清晰、输出更美观。多动手实践,很快你就能熟练运用这些技巧!

