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语言易上手功能有限,不推荐维护老代码

学习建议

  1. 新项目首选f-string - 语法简单直观

  2. 掌握数字格式化 - .2f,千分位等常用格式

  3. 多练习对齐功能 - 让输出更美观

  4. 理解不同场景 - 根据需求选择合适的格式化方法

记住,字符串格式化的目标就是让代码更清晰、输出更美观。多动手实践,很快你就能熟练运用这些技巧!


点赞 0

我的名片

网名:梦宇信息技术

职业:软件开发、Mes系统工程师

现居:福建省-福州市

QQ:703159

站点信息

  • 联系QQ:703159
  • 文章统计118篇文章
  • 标签总数6
  • 加我微信:扫码,加我微信