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 写法,更简洁
相关推荐
浔川python社2 小时前
浔川AI翻译v2.0版本下架通告
python
写代码的【黑咖啡】2 小时前
深入了解 Python 中的 Seaborn:优雅的数据可视化利器
开发语言·python·信息可视化
matlabgoodboy2 小时前
matlab代编程序机器学习通信仿真python神经网络图像处理优化算法
python·机器学习·matlab
qq7422349842 小时前
大模型技术全景与核心概念解析:从基础原理到AI智能体架构
人工智能·python·架构
qq_13948428822 小时前
python基于大数据技术的酒店消费数据分析系统
大数据·python·scrapy·django·flask
逆境清醒2 小时前
Python 的数字类型(整数、浮点数、复数、布尔类型、类型转换、数值运算、判断类型)
python
郝学胜-神的一滴2 小时前
机器学习数据工程之基石:论数据集划分之道与sklearn实践
开发语言·人工智能·python·程序人生·机器学习·sklearn
轻竹办公PPT2 小时前
AI生成PPT好用吗?工作总结场景下的工具排名更新
人工智能·python·powerpoint
SCBAiotAigc2 小时前
bash前面的(base)实现的原理
人工智能·python·ubuntu