当前位置: 首页 > 后端技术 > Python

秒懂一切!Python字符串格式化format方法详解

时间:2023-03-26 18:25:30 Python

format是嵌入字符串的方法,用于对字符串进行格式化。被替换的字符串用花括号{}标示,这在一定程度上符合%的目的。但是在某些方面更方便1.基本用法1.按照{}的顺序匹配括号中的值s="{}isa{}".format('Tom','Boy')print(s)#TomisaBoys1="{}isa{}".format('Tom')#抛出异常,Replacementindex1outofrangeforpositionalargstupleprint(s1)2.Tomatchparametersbyindexis这里需要注意,索引计数从0开始。s="{0}isa{1}".format('Tom','Boy')print(s)#TomisaBoys1="{1}isa{2}".format('Tom','Lily','Girl')print(s1)#Lily中索引的顺序是Girl字符串可以打乱,不影响匹配。s="{1}isa{0}".format('Boy','Tom',)print(s)#TomisaBoy3,按参数名匹配参数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)#TomisaBoy4、混搭可以通过索引和参数名来匹配。s="Mynameis{},iam{age}岁,Shenameis{}".format('Liming','Lily',age=10)print(s)#MynameisLiming,iam10岁,她叫Lily需要注意的是命名参数一定要写在最后。负责编译和报错!s="Mynameis{},iam{age}yearold,Shenameis{}".format('Liming',age=10,'Lily')print(s)#SyntaxError:positionalargumentfollowskeywordargument此外,索引和默认格式不能混合使用。s="{}是一个{0}".format('Boy','Tom',)print(s)s1="{}是一个{1}".format('Boy','Tom',)以上两种print(s1)的写法都报异常。#ValueError:cannotswitchfromautomaticfieldnumberingtomanualfieldspecification2.高级用法1.支持对参数部分的引用您可以使用索引来获取参数部分的值。如下:s[0]=w。s="Thewordis{s},{s[0]}isinitials".format(s='world')#Thewordisworld,wisinitialsprint(s)2.号码处理普通直接匹配号码不多可以说,与基础部分中的字符串匹配相同。s='πis{}'.format(3.1415926)print(s)#πis3.1415926如何使用format保留两位小数?需要用:.2f,我们用%格式化的时候用%:.2fs='πis{:.2f}'.format(3.1415926)print(s)#πis3.14s1='πis%.2f'%3.1415926print(s1)#π为3.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.格式处理:+number指定转换后的字符串长度,不足部分用空格补全s="{:2}b".format('a')print(s)#ab(后面加一个空格a)#如果指定的长度小于参数的长度,匹配原参数s1="{:2}World".format('Hello')print(s1)#HelloWorld4.字符可以用:符号^数字。该数字是填充后字符串的总长度。s="{:*^10}".format('Hello')print(s)#**Hello***s="{:-^20}".format('123456')print(s)#------123456------如果数字小于字符串的长度,则不进行填充。s="{:*^3}".format('Hello')print(s)#Hello5、list、tuple的拆分格式化的时候,可以用*或者**来拆分list和tuple。foods=['fish','beef','fruit']s='ilikeeat{}and{}and{}'.format(*foods)#ilikeeatfishandbeefandfruitprint(s)foods=['fish','beef','fruit']s='我喜欢吃{2}and{0}and{1}'.format(*foods)#ilikeeatfruitandfishandbeefprint(s)dict_temp={'name':'Lily','age':18}#字典需要拆分**s='Mynameis{name},iam{age}yearsold'.format(**dict_temp)print(s)#我叫Lily,今年18岁史上最全Python资料合集(长期更新).隔壁的孩子都哭了---点击收藏