字符串格式化是 Python 编程中最基础也最常用的操作之一,str.format()作为 Python 内置的字符串格式化方法,凭借灵活的语法和丰富的功能,成为处理动态文本生成、数据格式化输出的核心工具。今天小编将从语法规则到实际场景,向大家系统讲解format()的使用方法,帮助你彻底掌握这一基础技能。一、format () 基本语法
str.format()的核心逻辑是将方法中的参数按照指定规则填充到字符串的占位符{}中,其基础语法结构为:
# 通用语法格式化字符串.format(参数1, 参数2, ..., 参数n)
- 格式化字符串:包含一个或多个
{}占位符的字符串,占位符可定义填充规则; - format () 参数:任意类型的 Python 对象(数字、字符串、容器等),用于替换占位符;
- 返回值:完成格式化后的新字符串(原字符串不会被修改)。
二、format () 核心使用方式
1. 按位置填充参数
这是format()最基础的用法,分为 “默认位置” 和 “指定位置” 两种形式,适用于参数顺序固定的场景。
(1)默认位置填充
占位符{}不指定任何标识,按format()参数的传入顺序依次填充:
# 示例:基础位置填充s = "{} + {} = {}"result = s.format(1, 2, 3)print(result) # 输出:1 + 2 = 3
(2)指定位置填充
占位符{数字}中填写参数的索引(从 0 开始),可灵活调整填充顺序,甚至重复使用同一个参数:
# 示例:指定索引调整顺序s = "第{1}个参数是{0},重复使用{0},再用{1}"result = s.format("Python", 5)print(result) # 输出:第5个参数是Python,重复使用Python,再用5
2. 按关键字填充参数
当参数数量较多或顺序不固定时,为format()参数指定关键字,占位符{关键字}对应填充,可大幅提升代码可读性:
# 示例:关键字参数填充s = "姓名:{name},年龄:{age},城市:{city}"result = s.format(name="李明", age=25, city="北京")print(result) # 输出:姓名:李明,年龄:25,城市:北京
3. 结合列表 / 元组填充
若参数已存储在列表或元组中,可通过*解包后传入format(),无需手动提取每个元素:
# 示例1:列表解包user_info = ["王华", 30, "工程师"]s = "{},{}岁,职业:{}"result = s.format(*user_info)print(result) # 输出:王华,30岁,职业:工程师# 示例2:元组解包+指定索引scores = (85, 90, 95)s = "数学:{2},语文:{0},英语:{1}"result = s.format(*scores)print(result) # 输出:数学:95,语文:85,英语:90
4. 结合字典填充
对于字典类型的参数,可通过**解包传入,占位符直接使用字典的键名即可匹配对应值:
# 示例:字典解包填充product = {"name": "键盘", "price": 199, "stock": 50}s = "商品:{name},单价:{price}元,库存:{stock}件"result = s.format(**product)print(result) # 输出:商品:键盘,单价:199元,库存:50件
5. 数值格式化扩展
format()支持对数字进行精细化格式化,满足数据展示的各类需求,常见格式如下:
# 示例1:保留指定小数位数(.nf 表示保留n位小数)num = 3.1415926s = "圆周率(保留2位):{:.2f}"print(s.format(num)) # 输出:圆周率(保留2位):3.14# 示例2:百分比格式(.n% 表示保留n位小数的百分比)rate = 0.789s = "完成率:{:.1%}"print(s.format(rate)) # 输出:完成率:78.9%# 示例3:千分位分隔符(, 表示千分位)amount = 1234567.89s = "总金额:{:,.2f}"print(s.format(amount)) # 输出:总金额:1,234,567.89
三、常见注意事项
- 占位符的数量 / 关键字需与
format()参数匹配,否则会抛出IndexError(位置不匹配)或KeyError(关键字不匹配); - 若需在字符串中显示
{}本身,需使用{{}}进行转义:
s = "占位符示例:{{}},实际填充值:{}"print(s.format("测试")) # 输出:占位符示例:{},实际填充值:测试
- 数值格式化符需与参数类型匹配(如
f仅适用于浮点数 / 整数,%适用于数值类型),避免类型错误。
总结
str.format()通过{}占位符实现字符串动态填充,核心支持位置、关键字两种填充逻辑;- 结合
*(列表 / 元组解包)、**(字典解包)可高效复用容器类型数据; - 内置数值格式化功能,可直接实现小数保留、百分比、千分位等常见数据展示需求。
掌握str.format()的用法,能够高效处理 Python 中的字符串格式化场景,相比简单的字符串拼接,其语法更规范、可读性更高,是 Python 基础编程中必备的核心技能。
小编最近发现了一个免费的Python宝藏网站,适合零基础小白入门,包含从0基础到就业全系列学习笔记,网站获取方式见文末!