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 写法,更简洁
相关推荐
kszlgy1 天前
Day 52 神经网络调参指南
python
wrj的博客1 天前
python环境安装
python·学习·环境配置
Pyeako1 天前
深度学习--BP神经网络&梯度下降&损失函数
人工智能·python·深度学习·bp神经网络·损失函数·梯度下降·正则化惩罚
摘星编程1 天前
OpenHarmony环境下React Native:Geolocation地理围栏
python
充值修改昵称1 天前
数据结构基础:从二叉树到多叉树数据结构进阶
数据结构·python·算法
q_35488851531 天前
AI大模型:python新能源汽车推荐系统 协同过滤推荐算法 Echarts可视化 Django框架 大数据毕业设计(源码+文档)✅
大数据·人工智能·python·机器学习·信息可视化·汽车·推荐算法
Yeats_Liao1 天前
开源生态资源:昇腾社区ModelZoo与DeepSeek的最佳实践路径
python·深度学习·神经网络·架构·开源
被星1砸昏头1 天前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
love530love1 天前
彻底解决 ComfyUI Mixlab 插件 Whisper.available False 的报错
人工智能·windows·python·whisper·win_comfyui
不解风水1 天前
《深度学习入门:基于 Python 的理论与实现》(斋藤康毅)
人工智能·python·深度学习