format语句

Python format 格式化详解

str.format() 是 Python 中用于字符串格式化的核心方法,通过占位符 {} 结合参数替换,实现灵活的字符串拼接,比传统的 % 格式化更强大、易读。


一、基础用法

1. 位置占位符

(1)按顺序匹配

占位符 {} 无编号时,按参数顺序一一对应:

python

运行

ini 复制代码
# 基础示例
text = "{} 是 {} 年的第一天".format(1月1日, 2026)
print(text)  # 输出:1月1日 是 2026 年的第一天

# 多参数示例
info = "姓名:{},年龄:{},城市:{}".format("张三", 25, "北京")
print(info)  # 输出:姓名:张三,年龄:25,城市:北京

(2)指定位置编号

通过 {数字} 指定参数顺序(数字对应 format 入参的索引,从 0 开始),可重复使用参数:

python

运行

ini 复制代码
text = "第{1}名:{0},{0} 获得了{1}名的好成绩".format("李四", 1)
print(text)  # 输出:第1名:李四,李四 获得了1名的好成绩

2. 关键字占位符

通过 {关键字} 匹配 format 的命名参数,可读性更高,参数顺序可任意:

python

运行

ini 复制代码
info = "姓名:{name},年龄:{age},城市:{city}".format(age=25, name="张三", city="北京")
print(info)  # 输出:姓名:张三,年龄:25,城市:北京

# 结合字典(解包**)
user = {"name": "王五", "age": 30, "city": "上海"}
info = "姓名:{name},年龄:{age},城市:{city}".format(** user)
print(info)  # 输出:姓名:王五,年龄:30,城市:上海

二、进阶用法(格式控制)

在占位符内通过 : 指定格式,语法:{占位符:格式说明},支持数字、字符串、日期等格式化。

1. 数字格式化

格式符 作用 示例 输出
d 整数(十进制) "{:d}".format(123) 123
f 浮点数(指定小数位) "{:.2f}".format(3.1415) 3.14
% 百分比格式 "{:.1%}".format(0.85) 85.0%
, 千分位分隔符 "{:,}".format(1234567) 1,234,567
0填充 补零到指定长度 "{:04d}".format(12) 0012

python

运行

python 复制代码
# 浮点数保留2位小数
print("圆周率:{:.2f}".format(3.1415926))  # 输出:圆周率:3.14

# 百分比格式
print("通过率:{:.1%}".format(0.925))  # 输出:通过率:92.5%

# 整数补零(总长度4)
print("编号:{:04d}".format(8))  # 输出:编号:0008

2. 字符串格式化

格式符 作用 示例 输出
<n 左对齐(总长度 n) "{:<10}".format("Python") Python
>n 右对齐(总长度 n) "{:>10}".format("Python") Python
^n 居中对齐(总长度 n) "{:^10}".format("Python") Python
填充字符 自定义填充 "{:*<10}".format("Python") Python****

python

运行

python 复制代码
# 居中对齐,总长度10,填充-
print("标题:{:-^10}".format("公告"))  # 输出:标题:----公告----

# 左对齐,总长度8
print("用户名:{:<8}".format("admin"))  # 输出:用户名:admin    (后补空格)

3. 日期格式化(需结合 datetime)

python

运行

perl 复制代码
from datetime import datetime

now = datetime(2026, 1, 1, 10, 30, 0)
# 格式:年-月-日 时:分:秒
date_text = "当前时间:{:%Y-%m-%d %H:%M:%S}".format(now)
print(date_text)  # 输出:当前时间:2026-01-01 10:30:00

三、常见场景示例

1. 拼接复杂字符串

python

运行

ini 复制代码
# 商品信息格式化
product = {"name": "手机", "price": 2999.99, "stock": 500}
text = "商品:{name},单价:{price:.2f}元,库存:{stock:,}台".format(** product)
print(text)  # 输出:商品:手机,单价:2999.99元,库存:500台

2. 动态生成 SQL 语句

python

运行

sql 复制代码
# 安全拼接SQL(避免硬编码)
sql = "SELECT * FROM user WHERE name = '{name}' AND age > {age}".format(name="张三", age=20)
print(sql)  # 输出:SELECT * FROM user WHERE name = '张三' AND age > 20

四、注意事项

  1. 占位符匹配:关键字占位符必须与 format 的命名参数一致,位置占位符索引不能超出参数数量,否则报错。

  2. 格式符兼容 :不同类型的参数需匹配对应格式符(如整数用 d,浮点数用 f),否则报错。

  3. 简洁替代 :Python 3.6+ 支持 f-string(f"{变量}"),是 format 的简化版,更高效:

    python

    运行

    ini 复制代码
    name = "张三"
    age = 25
    print(f"姓名:{name},年龄:{age}")  # 等价于 format 写法,更简洁
相关推荐
摘星编程9 小时前
深入理解CANN ops-nn BatchNormalization算子:训练加速的关键技术
python
魔芋红茶9 小时前
Python 项目版本控制
开发语言·python
lili-felicity9 小时前
CANN批处理优化技巧:从动态批处理到流水线并行
人工智能·python
一个有梦有戏的人9 小时前
Python3基础:进阶基础,筑牢编程底层能力
后端·python
摘星编程10 小时前
解析CANN ops-nn中的Transpose算子:张量维度变换的高效实现
python
Liekkas Kono10 小时前
RapidOCR Python 贡献指南
开发语言·python·rapidocr
玄同76510 小时前
Python 后端三剑客:FastAPI/Flask/Django 对比与 LLM 开发选型指南
人工智能·python·机器学习·自然语言处理·django·flask·fastapi
爱吃泡芙的小白白10 小时前
环境数据多维关系探索利器:Pairs Plot 完全指南
python·信息可视化·数据分析·环境领域·pairs plot
派葛穆10 小时前
Python-批量安装依赖
开发语言·python