pin_drop当前位置:知识文库 ❯ 图文

Python format方法格式化

str.format()方法是Python 2.6引入的字符串格式化方式,相比百分号格式化更加强大和灵活。它支持位置参数、关键字参数、属性访问、索引访问等多种特性,并提供了丰富的格式规范迷你语言。本篇教程将全面介绍format()方法的各种用法。


基本用法

位置参数

使用{}作为占位符,按顺序传入参数:

代码示例

result = "{} {} {}".format("Python", "是", "最好的")
print(result)

result = "{0} {1} {2}".format("Python", "是", "最好的")
print(result)

result = "{2} {1} {0}".format("语言", "的", "最好")
print(result)

result = "{0} {0} {1}".format("你好", "世界")
print(result)

提示:不指定索引时,按顺序填充;指定索引时,可以重复使用或调整顺序。

关键字参数

使用命名参数,通过名称引用:

代码示例

result = "{name}今年{age}岁".format(name="张三", age=25)
print(result)

result = "姓名:{name},城市:{city}".format(name="李四", city="北京")
print(result)

混合使用

位置参数和关键字参数可以混合使用,但位置参数必须在关键字参数之前:

代码示例

result = "{0}叫{name},今年{1}岁".format("他", 25, name="王五")
print(result)

格式规范

format()方法支持在{}内使用格式规范语法:{[字段名]:[格式规范]}

填充与对齐

代码示例

print("{:>10}".format("Python"))
print("{:<10}".format("Python"))
print("{:^10}".format("Python"))
print("{:*^10}".format("Python"))
格式 含义 输出
{:>10} 右对齐,宽度10 Python
{:<10} 左对齐,宽度10 Python
{:^10} 居中对齐,宽度10 Python
{:*^10} 居中,用*填充 **Python**

数字格式化

代码示例

print("{:d}".format(42))
print("{:f}".format(3.14159))
print("{:.2f}".format(3.14159))
print("{:+.2f}".format(3.14159))
print("{:.0f}".format(3.14159))
格式 含义 输出
{:d} 整数 42
{:f} 浮点数(默认6位小数) 3.141590
{:.2f} 2位小数 3.14
{:+.2f} 带正号,2位小数 +3.14
{:.0f} 无小数 3

进制转换

代码示例

num = 255
print("二进制: {:b}".format(num))
print("八进制: {:o}".format(num))
print("十进制: {:d}".format(num))
print("十六进制: {:x}".format(num))
print("十六进制: {:X}".format(num))
格式 含义 输出
{:b} 二进制 11111111
{:o} 八进制 377
{:d} 十进制 255
{:x} 十六进制(小写) ff
{:X} 十六进制(大写) FF

千位分隔符

代码示例

print("{:,}".format(1234567890))
print("{:_}".format(1234567890))

百分比格式

代码示例

ratio = 0.8567
print("{:.2%}".format(ratio))

数字格式化

科学计数法

代码示例

num = 12345.6789
print("{:e}".format(num))
print("{:.2e}".format(num))
print("{:E}".format(num))

宽度和精度组合

代码示例

print("{:8.2f}".format(3.14159))
print("{:08.2f}".format(3.14159))
print("{:+8.2f}".format(3.14159))
print("{:-8.2f}".format(-3.14159))

对齐与填充

综合示例

代码示例

data = [
    ("苹果", 5.50, 10),
    ("香蕉", 3.80, 20),
    ("橙子", 6.20, 15),
]

print("{:^10}{:>8}{:>8}".format("商品", "单价", "数量"))
print("-" * 26)
for name, price, qty in data:
    print("{:^10}{:>8.2f}{:>8d}".format(name, price, qty))

访问属性和索引

代码示例

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

p = Person("张三", 25)
print("姓名:{0.name},年龄:{0.age}".format(p))

data = ["Python", "Java", "C++"]
print("第一:{0[0]},第二:{0[1]}".format(data))

代码示例

综合运用format方法:

代码示例

print("=" * 50)
print("学生成绩单".center(50))
print("=" * 50)

students = [
    ("张三", 85.5, "A"),
    ("李四", 92.3, "A+"),
    ("王五", 67.8, "C"),
    ("赵六", 78.0, "B"),
]

header = "{:<8}{:>10}{:>8}".format("姓名", "成绩", "等级")
print(header)
print("-" * 30)

for name, score, grade in students:
    row = "{:<8}{:>10.1f}{:>8}".format(name, score, grade)
    print(row)

print("-" * 30)
avg = sum(s[1] for s in students) / len(students)
print("平均成绩:{:.1f}".format(avg))

pi = 3.14159265358979
print("\n圆周率格式化:")
print("默认: {}".format(pi))
print("2位小数: {:.2f}".format(pi))
print("科学计数: {:.4e}".format(pi))
print("百分比: {:.2%}".format(pi / 10))

注意事项

提示format()方法中,{}内的索引从0开始

提示:位置参数和关键字参数混合使用时,位置参数必须在前

提示:格式规范中,填充字符、对齐方式和宽度必须按顺序书写

提示{}中的索引不能超出参数范围,否则会报IndexError

提示:在Python 3.6+中,推荐使用f-string替代format方法


小结

本篇教程全面介绍了str.format()方法的用法,包括位置参数、关键字参数、格式规范(填充、对齐、宽度、精度)、数字格式化(进制转换、科学计数法、千位分隔符、百分比)等。format()方法比百分号格式化更灵活强大,但在Python 3.6+中,f-string通常是更好的选择。


练习题

练习1

使用format()方法输出一个整齐的表格,包含以下数据:商品名称(居中,宽度8)、单价(右对齐,保留2位小数,宽度8)、库存(右对齐,宽度6)。数据自行设定。

练习2

使用format()方法将数字 2024 分别以二进制、八进制、十六进制输出,并使用居中对齐,宽度12,用-填充。

常见问题

format()方法中的索引是什么意思?

format()方法中的{}可以使用数字索引来引用传入的参数。{0}表示第一个参数,{1}表示第二个参数,以此类推。不写索引时按顺序自动填充。索引可以重复使用,也可以调整顺序。

如何在使用format()时实现居中对齐?

使用^符号实现居中对齐,例如"{:^10}".format("Python")会将"Python"居中显示在10个字符宽度中。配合填充字符可以使用"{:*^10}".format("Python"),用*填充空白部分。

format()可以访问对象的属性吗?

可以。使用{0.name}的语法可以访问第一个参数的name属性,{0[0]}可以访问第一个参数的第一个索引元素。这在格式化复杂数据结构时非常有用。

千位分隔符怎么用?

使用{:,}可以使用逗号作为千位分隔符,例如"{:,}".format(1234567890)会输出"1,234,567,890"。也可以使用{:_}使用下划线作为分隔符。

format()和f-string哪个更好?

在Python 3.6+中,f-string更简洁、性能更好、可读性更强。format()的主要优势是兼容旧版本Python。如果你的项目使用Python 3.6+,建议优先使用f-string。

小贴士

format()方法的格式规范迷你语言非常强大,除了本文中介绍的功能外,还支持日期时间格式化、自定义格式等高级用法。了解format()的完整规范有助于你处理各种复杂的字符串格式化需求。不过记住,在Python 3.6+中,f-string通常是更好的选择。

标签: format方法 字符串格式化 位置参数 关键字参数 数字格式化 Python基础

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python百分号格式化 下一篇: Python f-string格式化

poll相关推荐

作者头像 智能小晨 python

Python元组命名namedtuple

发布日期 2026-05-31
深入学习Python命名元组namedtuple,掌握字段访问、_make创建、_asdict转字典、_replace替换字段等核心方法。理解命名元组与普通元组的区别,写出更清晰易读的Python代码。
作者头像 智能小晨 python

Python元组解包

发布日期 2026-05-31
全面学习Python元组解包技巧,包括基本解包、星号扩展解包、嵌套解包、交换变量和函数多值返回。掌握优雅的Python赋值语法,让你的代码更简洁高效。
作者头像 智能小晨 python

Python元组index方法

发布日期 2026-05-31
深入学习Python元组index()方法,掌握元素索引查找技巧。了解index()语法、指定范围查找、安全查找方法和实际应用场景,避免ValueError异常,提升Python编程效率。
作者头像 智能小晨 python

Python元组count方法

发布日期 2026-05-31
深入学习Python元组count()方法,掌握元素出现次数统计技巧。了解count()语法、性能优化建议、嵌套元组统计和实际应用场景,配合练习题巩固所学知识。