本文整理 Python 四种主流字符串拼接/格式化方法:+ 加号拼接、f-string 格式化、% 占位符格式化、format() 格式化,包含完整语法、案例、细节注意点。
重点: format() 格式化 中关键字命名占位
一、+ 加号拼接(基础拼接)
核心规则
- 直接使用
+连接多个字符串 - 重点:只能拼接字符串类型,数字、浮点数等非字符串类型,必须用
str()强制转换
实战代码
name="小李"age=20# 非字符串变量通过 str() 转换后拼接print("姓名:"+name+",年龄:"+str(age))运行结果
姓名:小李,年龄:20
二、f-string 格式化(推荐、最简)
核心规则
- 语法:
f"字符串{变量/表达式}" - 支持直接嵌入变量、运算表达式、格式控制
- 无需手动类型转换,可读性最强,Python3.6+ 推荐使用
实战代码
name="小李"age=20height=1.73# 支持变量、表达式运算、小数精度控制print(f"姓名:{name},年龄:{age-1},身高:{height:.2f}")运行结果
姓名:小李,年龄:19,身高: 1.73
三、% 占位符格式化(传统写法)
通过不同占位符匹配对应数据类型,严格校验类型,类型不匹配会直接报错。
1、%s 字符串占位符
适配字符串类型数据
title='大白菜'print('蔬菜%s'%title)输出:蔬菜大白菜
2、%d 整数占位符
- 仅支持数字类型,传字符串直接报错
- 传入浮点数会自动舍弃小数,只保留整数位
total=7print('总价%d元'%total)输出:总价7元
3、%f 浮点数占位符
- 仅支持数字类型,传字符串直接报错
- 传入整数会自动补0展示为浮点数
- 进阶格式:
%m.nf—— 总宽度m位(包含小数点),保留n位小数
price=19.99# 总宽度5位,保留2位小数print('价格为%5.2f'%price)输出:价格为19.99
四、format() 格式化(通用、功能强大)
str.format()是进阶字符串格式化工具,以{}为占位符,替代繁琐的 % 写法,可读性更高、支持参数复用、适配多场景,是项目常用写法。
写法1:无编号按位置传参(顺序匹配)
{}不写数字,参数按传入顺序依次填充
text="姓名:{},年龄:{}"res=text.format("张三",24)print(res)输出:姓名:张三,年龄:24
写法2:数字编号占位(参数复用、调整顺序)
通过数字编号指定参数位置,支持同一个参数多次复用
text="{0}今年{1}岁,{0}从事开发工作"res=text.format("小李",26)print(res)输出:小李今年26岁,小李从事开发工作
写法3:关键字命名占位(最常用、可读性强)
通过参数名精准匹配,无需关注顺序,适合参数较多的场景
text="公司:{company},行业:{industry}"res=text.format(company="阿里云",industry="人工智能")print(res)输出:公司:阿里云,行业:人工智能
写法4:传入字典批量填充
通过**解包字典,批量匹配占位符,高效填充多组数据
info={"title":"分析师报告","content":"AI行业持续增长"}text="文档类型:{title},内容:{content}"res=text.format(**info)print(res)输出:文档类型:分析师报告,内容:AI行业持续增长
写法5:对象属性填充
支持直接访问对象属性填充到字符串中,适配面向对象场景
classDoc:def__init__(self):self.type="公司公告"self.msg="完成AI企业并购"d=Doc()res="文件:{doc.type},详情:{doc.msg}".format(doc=d)print(res)输出:文件:公司公告,详情:完成AI企业并购
五、四种方法优缺点总结
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| + 加号拼接 | 简单直观,新手易上手 | 需手动类型转换,多变量拼接繁琐 | 少量简单字符串拼接 |
| f-string | 语法简洁、无需转义、支持运算格式化、可读性拉满 | 仅 Python3.6+ 支持 | 日常开发、绝大多数场景(首选) |
| % 占位符 | 语法经典、兼容老旧代码 | 类型校验严格、可读性差、不支持参数复用 | 维护老旧项目 |
| format() | 功能全面、支持多传参方式、兼容性好 | 语法比f-string稍繁琐 | 多参数、动态填充、兼容低版本Python |