当前位置: 首页 > 图灵资讯 > 行业资讯> 详解Python中的str.format方法

详解Python中的str.format方法

发布时间:2025-10-07 17:42:41

字符串大约有40种内置方法,但实际上有20多种常用方法,其中也有类似的用法,如:isalpha,isalnum,isdigit,还有一些split切割,join拼接,strip指定字符,角色是围绕字符串添加删除,我认为找出和熟练使用这些常用的方法,一方面需要在理解的基础上练习更多的复习,同时巩固工作使用,加深记忆。忘记并不重要,善于总结,善于“增加、删除和检查”的大脑记忆是关键。

str.format的意义:

作为一名初学者,最近发现字符串中最复杂的方法之一就是:str.format(),format的名字,格式化,格式化,实际上是为了得到我们需要的格式数据,即格式输出,格式输出我们开始学习的是%s、%d是实现的,但这种方法有很多局限性。例如,%s是根据位置格式输出的。局限性是显而易见的。如果一次性格式输出过多或根据位置输出过多,则太容易出错。因此,更准确的格式输出方法是str.format()

str.format方法介绍:

1、通过字符串中的花括号{}来识别替换字段,从而完成字符串的格式化。

2、替换内容包括:字段名、格式说明符三部分,形式一般为:{字段名:格式说明符}

以上是介绍,以下是干货:

具体实现:

1、实现方法简单:

(1)省略不写{} ________________

(2)数字{十进制非负整数} _____写作方法类似于根据位置索引

(3)变量名{关键字} ____________

(4)可混合使用

1.1 省略不写:花括号内省略不写,代表位置参数的传输

替换字段形式{}

注:花括号的数量少于等于后面位置参数的数量,多了肯定会报错。

#用{}代表占位符,直接位置传参
print('我是{},喜欢{};.format('灭霸','打响指'))
#我是灭霸,喜欢打手指!
#{}数量必须小于后面位置的参数,否则会报错
print('我是{},喜欢{},不喜欢{};.format('宙斯','放大抢头','放空大','小短腿'))
print('我是{},喜欢{},不喜欢{};.format('宙斯','放大抢头'))
#报错误:IndexError:tupleindexoutofrange

1.2 数字参数:位置参数通过位置索引值传输

索引从整数0开始

索引可以重复引用,输出

索引值是将后位置参数放入元组取值的过程,因此索引值不能大于元组中位置参数的索引值,否则会报错

print('本人身高{0},年龄刚好{1},{2}长。'.format('180cm',18,'15cm'))
#我身高180cm,年龄正好18,15cm长。
print('本人身高{0},{0}不多不少,年龄刚好{1}。'.format('180cm',18))
#身高180cm,身高180cm,年龄刚好18岁。
print('本人身高{0},年龄刚好{1},{2}长。'.format('180cm',18))
#IndexError:tupleindexoutofrange

1.3 变量名{关键字} 传输输出参数

想想如何传递关键词参数,类比一下,bingo!

特别注意,关键字的变量名不需要在参数中添加引号,同时{}引用直接填写变量名。

print('我的名字叫{name},我其实是个人{career}!'.format(name='尹天仇',career='演员'))
#我的名字叫尹天仇,我其实是个人演员!
print('我叫{name2},又名{name1},弟弟叫{name3};.format(name1='至尊宝',name2='秦汉',name3='秦祥林'))
#我叫秦汉,也叫至尊宝,弟弟叫秦祥林!

1.4 {}、{0}、{name}混合使用

位置参数在前,关键字参数在后

{}不能与数字形式{0}同时使用。

print('吹{0},吹{2},吹{1},玩{ball}!'.format('球','气球','大气球',ball='球球'))
#吹球,吹大气球,吹大气球,玩球!
print('吹{},吹大{},玩{ball}!'.format('球','气球','大气球',ball='球球'))
#吹个球,吹大气球,玩球!
print('吹{0},吹大{1},玩{ball}!'.format('球','气球','大气球',ball='球球'))
#吹个球,吹大气球,玩球!
print('吹{0},吹大{}{ball}!'.format('球','气球','大气球',ball='球球'))
#Valueerrorrorrorrorroror:cannotswitchfrommanualfieldspecificationtoautomaticfieldnumbering

2、使用元组和字典传参:

str.format()方法可以以*元组和**字典的形式传参,可以混用。

方法相当于*args和**kwargs打散传参,元组按位置或索引传参,字典按关键字传参。

位置参数、关键字参数、*元组、**字典也可同时使用,但在关键字参数之前要注意位置参数,*元组应在**字典之前。

#元组
print('我喜欢{},喜欢{},也喜欢{}!'.format(*('篮球','足球','观球')))
#我喜欢篮球、足球和观球!
print('喜欢{0},喜欢{1},也喜欢{2}!'.format(*('篮球','足球','观球')))
#我喜欢篮球、足球和观球!
#字典
print('{name}的女朋友是{gf},我也喜欢{gf}!'.format(**{'name':'钢铁侠','gf':'小辣椒'}))
#钢铁侠的女朋友是辣椒,我也喜欢辣椒!
#元组+字典
print('我是{beauty}{1},我们都喜欢{0},请{2}!'\
.format(*('球类','球迷','文明观球'),**{'beauty':'斯嘉丽·约翰逊',}))
#我是斯嘉丽约翰逊的粉丝,我们都喜欢球类,请文明观看!
#混合使用位置参数、关键字参数、元组、字典:
print('我是{name},好像{age}^_^,{0},等你!喜欢{1}、{2}和{3}。\n我唯一的>>>:{only_one}\n我的小可爱>>>:{love}!'\
.format('武汉',name='苏光体',age=18,*('读书','健身','折腾数码'),**{'only_one':'杨林','love':'苏弘睿'}))
#我是苏光体,好像是18^_^,在武汉,等你!
#喜欢读书,健身,折腾数字。
#我的唯一>>>:杨林
#我的小可爱>>>:苏弘睿!

使用元组或字典格式输出的形式相当于打散元组和字典,成为位置参数和关键字参数,然后按照以前的方法传输参数。

相关推荐:Python视频教程

3、对象参数格式化输出传值:

formate也可以使用对象属性传参,可以是实例对象,也可以是列表和字典。

#对象属性传参
#实例对象:实例对象:
classDog:
def__init__(self,name,speak):
self.name=name
self.speak=speak
dog1=Dog('小黄','汪汪汪')
print('我的{0.name}会{0.speak}。'.format(dog1)
#我的小黄会汪汪汪汪的。
#文件对象
withopen('text.txt','wb')asf:
print('打开的文件名为:{0.name}'.format(f))
#打开的文件名称为:text.txt
#列表,字典对象
print('Ihavea{0[0]},Ihavea{0[1]}.'.format(['Apple','Pen']))
print('我叫{0[name]},{0[id]}就是我!'.format({'name':'阿星','id':'9527'}))
print('{1[name]}变成{0[0]},藏进{1[role]}裤裆里,为什么不变{0[{0[0]}而是'.format(['葡萄','苹果'],{'name':'菩提老祖','role':'至尊宝'}))
#IhaveaApple,IhaveaPen.
#我叫阿星,9527就是我!
#菩提祖先变成了葡萄,藏在至尊宝的裤裆里,为什么不变苹果而是葡萄呢?

4、格式描述符:引入参数字符的格式

比如:

print('{0:.4f}'.format(3.1415926))
#冒号用于传入参数后:写入规定格式:.4f(取4位小数)结果为3.1416

说明符格式标准:[填充]对齐[正负][#][0][宽度][分组选项][.[类型码]精度][类型码] 同时,有序存在。具体用途如下:

填充:

(1)填充字符只能有一个

(2)未指定默认空间填充

(3)如指定填充字符,则必须同时指定对齐方法

对齐方式:

(1)< 左对齐

(2)> 右对齐

(3)^ 居中对齐

(4)= 填充正负号和数字(只对数字类型有效)可以输出类似的字符串:+0000012。

正负号:

(1)只对数字类型有效

(2)+ - 正负号

(3)空格:为了与负数对齐,需要在正数前添加一个空格

width的宽度

(1)宽度不指定,宽度由内容决定

(2)宽度前有0,意味着用0填充,相当于 0=填充和对齐

精度

(1)指小数点后面显示的小数位数。

(2)非数字类型是指字段宽度。

(3)整数类型不能指定精度,会报错。

以下示例:

#冒号用于传入参数后:写入规定格式:.4f(取4位小数)结果为3.1416
#填充、对齐、宽度
print('{0:人>2}'.format('<我是谁>'))#宽度不够,按实际字符显示
print('{0:人<11}'.format('<我>'))
print('{0:人^11}'.format('<我>'))
#<我是谁>
#<我>每个人,每个人,每个人
#人人人人<我>人人人人
#正负号,精度
print('{0:*=+10.4f}'.format(3.141526)#'*'>填充符,'='>指定填充正负号和数字,'10'>宽度,'.4f'>精度
print('{0:*>+10.4f}'.format(3.1415926)同上,'>'>右对齐
#+***3.1416
#***+3.1416
print('{0:&>10.4f}'.format(3.1415926))
print('{0:&<10.4f}'.format(3.1415926))
print('{0:&>10.4}'.format('我是中国人'))#精度为4,删除字符串中的前四个字符
#&&&&3.1416
#3.1416&&&&
#&&&&&&我是中国

类型码(规定输出的数据类型)

(1)字符串类型

(2)整数类型

(3)浮点数类型

#字符串类型(默认类型,忽视)
print('{0:s}'.format('abc'))#abc
print('{0:}'.format('abc'))#abc
#整数类型
#二进制|cunicode字符|d十进制整数|还有很多,比如o八进制|x十六进制...等等
print('{0:b}'.format(101))#1100101
print('{0:c}'.format(101))#e
print('{0:d}'.format(666))#666
#浮点数字类型
#E科学计数(默认精度6位)
print('{0:e}'.format#3.141593e+07
#f定点记法(默认精度6位)
print('{0:f}'.format#3.1415926

以上例子可以说不是很全面,只是大概有几个常见的例子,除了e,f类型和g通用类型,n number类型不常用于日常使用。所以不一一列出。

5、其他补充:

如果花括号能力需要格式化输出,可以用外套2层花括号转换解决

print('{{0}'.format('abc'))#{0}
print('{{{0}}'#;.format('abc'))#{abc}

另类格式化输出:

fromdatetimeimportdatetime
print('今天是:{0:%Y-%m%H:%M}'.format(datetime.now()))
#结果:
今天是:2019-0515:10

总结:

str.format()格式化输出方法可以说是%s加强型,特别是在处理更复杂的格式化输出过程中,可以更准确地实现输出目的,其集成方法可以说更复杂,许多方法个人认为没有用,只是锦上添花,个人认为只要掌握前几个简单的位置参数、关键字参数、元组、字典参数格式化输出形式。以下方法可以有,但不建议强制记忆,因为能量有限,然后打开。

相关文章

详解Python中的str.format方法

详解Python中的str.format方法

2025-10-07
python3 中try 异常调试 raise 异常抛出

python3 中try 异常调试 raise 异常抛出

2025-10-07
案例详解:Python类继承机制

案例详解:Python类继承机制

2025-10-07
超详细的介绍Python语句

超详细的介绍Python语句

2025-10-07
讲解用Python处理Excel表格

讲解用Python处理Excel表格

2025-10-07
列表推导式与生成表达式的区别

列表推导式与生成表达式的区别

2025-10-07