python字符串format方法参数解释_一文秒懂!Python字符串格式化之format方法详解

format是字符串内嵌的一个方法,用于格式化字符串。以大括号{}来标明被替换的字符串,一定程度上与%目的一致。但在某些方面更加的方便

1、基本用法

1、按照{}的顺序依次匹配括号中的值

s=

"{}isa{}".format(

"Tom",

"Boy")

print(s)

#TomisaBoy

s1=

"{}isa{}".format(

"Tom")

#抛出异常,Replacementindex1outofrangeforpositionalargstuple

print(s1)

2、通过索引的方式去匹配参数

这里需要注意的是,索引从0开始计算。s=

"{0}isa{1}".format(

"Tom",

"Boy")

print(s)

#TomisaBoy

s1=

"{1}isa{2}".format(

"Tom",

"Lily",

"Girl")

print(s1)

#LilyisaGirl

字符串中索引的顺序可以打乱,并不影响匹配。

s=

"{1}isa{0}".format(

"Boy",

"Tom",)

print(s)

#TomisaBoy

3、通过参数名来匹配参数s=

"{name}isa{sex}".format(name=

"Tom",sex=

"Boy")

print(s)

#TomisaBoy

同理,如果参数已经确定,可以直接利用{}进行格式化引用。

name=

"Tom"

sex=

"Girl"

#以f开头表示在字符串中支持大括号内的python表达式

s=

f"

{name}isa

{sex}"

print(s)

#TomisaBoy

4、混搭使用

可以通过索引,参数名来混搭进行匹配。s=

"Mynameis{},iam{age}yearold,Shenameis{}".format(

"Liming",

"Lily",age=

10)

print(s)

#MynameisLiming,iam10yearold,ShenameisLily

需要注意的是,命名参数必须写道最后。负责会编译报错!

s=

"Mynameis{},iam{age}yearold,Shenameis{}".format(

"Liming",age=

10,

"Lily")

print(s)

#SyntaxError:positionalargumentfollowskeywordargument

另外,不可以索引和默认格式化混合使用。s=

"{}isa{0}".format(

"Boy",

"Tom",)

print(s)

s1=

"{}isa{1}".format(

"Boy",

"Tom",)

print(s1)

以上两种写法均报异常。

#ValueError:cannotswitchfromautomaticfieldnumberingtomanualfieldspecification

2、进阶用法

1、支持对参数部分引用

可以通过索引对参数的部分进行取值。如下:s[0] = w。s=

"Thewordis{s},{s[0]}isinitials".format(s=

"world")

#Thewordisworld,wisinitials

print(s)

2、数字的处理

普通的直接匹配数字没什么好说的,与基础部分的字符串匹配一样。

s=

"πis{}".format(

3.1415926)

print(s)

#πis3.1415926

如何使用format 保留两位小数呢?需要使用:.2f,在用%进行格式化时我们使用的是%:.2fs=

"πis{:.2f}".format(

3.1415926)

print(s)

#πis3.14

s1=

"πis%.2f"%

3.1415926

print(s1)

#πis3.14

同时这种方法还可以用于字符串截取,不过数字后面就不能加f了。

s=

"{:.1}".format(

"Hello")

print(s)

#H

给数字加千位符s=

"{:,}".format(

1000000)

print(s)

#1,000,000

将数字转换成二进制

s=

"{:b}".format(

8)

print(s)

#1000

将数字转换成八进制s=

"{:o}".format(

8)

print(s)

#10

将数字转换成十六进制

s=

"{:X}".format(

12)

print(s)

#C

总结如下b: 输出整数的二进制方式;c: 输出整数对应的 Unicode 字符;d: 输出整数的十进制方式;o: 输出整数的八进制方式;x: 输出整数的小写十六进制方式;X: 输出整数的大写十六进制方式;

3、格式处理

通过:+数字指定转换后的字符串长度,不足的部分用空格补充s=

"{:2}b".format(

"a")

print(s)

#ab(a后面补了一个空格)

#如果指定的长度小于参数的长度,按照原参数匹配

s1=

"{:2}World".format(

"Hello")

print(s1)

#HelloWorld

4、字符的填充

可通过:符号^数字进行字符串的填充。其中数字为填充后的字符串总长度。

s=

"{:*^10}".format(

"Hello")

print(s)

#**Hello***

s=

"{:-^20}".format(

"123456")

print(s)

#-------123456-------

如果数字小于字符串的长度,则不进行填充操作。s=

"{:*^3}".format(

"Hello")

print(s)

#Hello

5、list、tuple的拆分

在format格式化时,可使用*或者**进行对list、tuple拆分。

foods=[

"fish",

"beef",

"fruit"]

s=

"ilikeeat{}and{}and{}".format(*foods)

#ilikeeatfishandbeefandfruit

print(s)foods=[

"fish",

"beef",

"fruit"]

s=

"ilikeeat{2}and{0}and{1}".format(*foods)

#ilikeeatfruitandfishandbeef

print(s)

dict_temp={

"name":

"Lily",

"age":

18}

#字典需要用**进行拆分

s=

"Mynameis{name},iam{age}yearsold".format(**dict_temp)

print(s)

#Myname

如有文章对你有帮助,

在看”和转发是对我最大的支持!

关注

Python极客专栏

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值